#iphone #objective-c #ipad #sqlite #core-data
#iPhone #objective-c #iPad #sqlite #core-data
Вопрос:
Я сохранил основные данные в файле SQLite, но мне интересно, как называется таблица в coredata. У меня есть три объекта, один из которых — students.
При попытке использовать инструкцию SQLite для ее чтения не вводится while
const char *sqlStatement = "SELECT * FROM students";
sqlite3_stmt *compiledStatement;
if(sqlite3_prepare_v2(database, sqlStatement, -1, amp;compiledStatement, NULL) == SQLITE_OK) {
while(sqlite3_step(compiledStatement) == SQLITE_ROW) {
NSString *aName = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 1)];
NSLog(aName);
}
}
Есть предложения, почему бы не ввести оператор if?
Комментарии:
1. В качестве первого шага я бы выяснил, какой код ошибки он возвращает, и сравнил с ними: sqlite.org/c3ref/c_abort.html
Ответ №1:
Ну, вы не должны запрашивать свои таблицы CoreData напрямую, CoreData существует для того, чтобы абстрагировать хранилище от кода. Вы должны использовать NSFetchRequest. Но чтобы ответить на ваш вопрос, таблица обычно будет называться zstudents.
Комментарии:
1. zstudents не работают, я переношу, как вы сказали мне, из старого хранилища в новое, мои последние вопросы относительно управления версиями
2. Что вам нужно сделать (если бы это был я), так это иметь исходную модель данных, скажем, она называется ‘Model’, создать новую (на этот раз версионную) с именем ‘Model2’. Вы должны иметь возможность создать два NSPersistentStoreCoordinators, NSManagedObjectModel, NSManagedObjectContext и т.д., По одному набору для каждой модели. Итак, теперь вы можете запрашивать две совершенно разные модели через CoreData. Теперь вы можете использовать стандартный NSFetchRequest для загрузки данных из ‘Model’ и создания новых объектов в ‘Model2’ и сохранения соответствующим образом.
3. Я сделал то, что вы сказали мне, но взаимосвязь вызывает исключения, любое предложение
Ответ №2:
Вы уверены, что таблица на самом деле называется students? Основные данные, лежащие в основе базы данных sqlite, обычно имеют что-то вроде ZStudents в качестве имен таблиц. Вы можете использовать бесплатный браузер базы данных SQLite для просмотра схемы в файлах .sqlite, но я должен задаться вопросом, зачем писать инструкции SQL, если вы используете Core Data?
Комментарии:
1. Я переношу со старой базы данных на новую, также у меня нет базы данных, которая есть на устройстве
2. могу ли я получить все таблицы в файле sqlite
3. Загрузите браузер базы данных SQLite для просмотра схемы (скопируйте файл .sqlite со своего устройства на свой Mac)
4. простите, как скопировать их с устройства на мой Mac