Моя цель - создать базу данных sqlite и заполнить ее данными (возможно, более 1000 строк) и использовать эту базу данных для предварительной загрузки основных данных и заполнения вид таблицы.
Пока что у меня есть табличное представление, работающее с основными данными, управляемыми объектными моделями. Я могу добавлять и удалять элементы - в основном у меня работает шаблон Master-Detail, но с моей собственной моделью.
Вопрос: Как создать базу данных sqlite в правильном формате для использования с Core Data?
Я успешно сделал это, используя предоставленные базы данных sql и учебники из книг. Я заметил, что таблица «fugitive» (например) в моем руководстве написана «ZFUGITIVE» в предоставленной базе данных sqlite. Все его столбцы имеют добавленную букву Z впереди ('ZFUGITIVEID', 'ZNAME' ...) и существуют три дополнительных столбца ('Z_PK', 'Z_ENT', 'Z_OPT'), которые не включены в модель управляемых объектов (.xcdatamodeld). Помимо буквы "Z" все заглавные имена и дополнительные столбцы я также вижу (в этой базе данных .sqlite, поставляемой с учебником), есть две дополнительные таблицы Z_PRIMARYKEY и Z_METADATA.
Я знаком с командами терминала sqlite и могу создать базу данных, но в ней нет правильного форматирования, дополнительных строк или дополнительных таблиц с метаданными. В качестве эксперимента я взял приведенную выше таблицу базы данных Fugitive sqlite и добавил к ней еще одну таблицу. Сначала я назвал это таблицей «вещь» со столбцами «идентификатор вещи» и «заголовок». Я создал для него управляемый объект и подключил его к своему табличному представлению. Я не мог на всю жизнь получить данные для предварительной загрузки в основных данных / в моем табличном представлении. Я не получал сообщений об ошибках, просто не загружались данные предварительно (это позволяло мне добавлять и удалять новые элементы, как в шаблоне Master-Detail).
Я переименовал таблицу "thing" в "ZTHING" со столбцами ("Z_PK", "Z_ENT", "Z_OPT", "ZTHINGID" и "ZTITLE"), и теперь я получаю следующее сообщение об ошибке. Я знаю, что это говорит мне, что я создал свою таблицу неправильно, однако я не могу найти документацию о том, как ее правильно создать. Пожалуйста помоги.
Вот большая ошибка гудка, которая в основном указывает, что номер версии, записанный в таблице Z_METADATA (столбец Z_UUID), неверен: [Или мне так кажется]
Unresolved error Error Domain=NSCocoaErrorDomain Code=134100 "The operation couldn’t be completed. (Cocoa error 134100.)" UserInfo=0x5b489c0 {metadata=<CFBasicHash 0x5b4e960 [0x2651380]>{type = immutable dict, count = 7,
entries =>
2 : <CFString 0x5b4ea40 [0x2651380]>{contents = "NSStoreModelVersionIdentifiers"} = <CFArray 0x5b4eb10 [0x2651380]>{type = immutable, count = 0, values = ()}
4 : <CFString 0x5b4ea90 [0x2651380]>{contents = "NSPersistenceFrameworkVersion"} = <CFNumber 0x5b4e530 [0x2651380]>{value = +248, type = kCFNumberSInt64Type}
6 : <CFString 0x5b4eac0 [0x2651380]>{contents = "NSStoreModelVersionHashes"} = <CFBasicHash 0x5b4eba0 [0x2651380]>{type = immutable dict, count = 1,
entries =>
1 : <CFString 0x5b4eb30 [0x2651380]>{contents = "Fugitive"} = <CFData 0x5b4eb50 [0x2651380]>{length = 32, capacity = 32, bytes = 0xe33370b6e7ca3101f91d25951e8bfe01 ... 9e50237bb313d390}
}
7 : <CFString 0x1ee464 [0x2651380]>{contents = "NSStoreUUID"} = <CFString 0x5b4e850 [0x2651380]>{contents = "E711F65F-3C5A-4889-872B-6541E4B2863A"}
8 : <CFString 0x1ee324 [0x2651380]>{contents = "NSStoreType"} = <CFString 0x1ee2e4 [0x2651380]>{contents = "SQLite"}
9 : <CFString 0x5b4ea10 [0x2651380]>{contents = "NSStoreModelVersionHashesVersion"} = <CFNumber 0x5d0b520 [0x2651380]>{value = +3, type = kCFNumberSInt32Type}
10 : <CFString 0x5b4eaf0 [0x2651380]>{contents = "_NSAutoVacuumLevel"} = <CFString 0x5b4ebf0 [0x2651380]>{contents = "2"}
}
, reason=The model used to open the store is incompatible with the one used to create the store}, {
metadata = {
NSPersistenceFrameworkVersion = 248;
NSStoreModelVersionHashes = {
Fugitive = <e33370b6 e7ca3101 f91d2595 1e8bfe01 3e7fb4de 6ef2a31d 9e50237b b313d390>;
};
NSStoreModelVersionHashesVersion = 3;
NSStoreModelVersionIdentifiers = (
);
NSStoreType = SQLite;
NSStoreUUID = "E711F65F-3C5A-4889-872B-6541E4B2863A";
"_NSAutoVacuumLevel" = 2;
};
reason = "The model used to open the store is incompatible with the one used to create the store";
}
Большое спасибо за вашу помощь, которую вы можете мне оказать