Как мне создать базу данных sqlite для использования с Core Data?

Моя цель - создать базу данных 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";
}

Большое спасибо за вашу помощь, которую вы можете мне оказать

5
задан Richard J. Ross III 13 December 2011 в 16:50
поделиться