1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/dehengxu-CoreDataEnvirSample

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

CoreDataEnvir (с 2011-05-25), последняя версия 0.4

CoreDataEnvir — это оболочка CoreData, которая позволяет удобно использовать CoreData и обеспечивает потокобезопасность в параллельном программировании. Вы можете использовать её параллельно, запуская отдельный экземпляр CoreDataEnvir в одном потоке.

Первый шаг:

Зарегистрируйте имя файла вашей базы данных:

    [CoreDataEnvir registDatabaseFileName:@"db.sqlite"];

Зарегистрируйте имя вашего файла модели (без расширения имени файла):

    [CoreDataEnvir registModelFileName:@"SampleModel"];

Простой доступ к базе данных:

Предположим, что класс Book является моделью, представляющей объект книги в вашем приложении для чтения. У него есть некоторые поля, такие как name, author и т. д.

Существует автор «John Stevens Cabot Abbott», написавший книгу под названием «Napoleon Bonnaparte».

Добавление новой записи:


[Book insertItemWithFillingBlock:^(id item) {
    item.name = @"CoreData tutorial";
    item.author = @"Headwindx";
}];

Извлечение множества записей:

//Найти все книги Джона Стивенса Кэбота Эбботта.
NSArray *books= [Feed itemsWithFormat:@"author = %@",  @"John Stevens Cabot Abbott"];

Получение одной записи:

//Найти один объект модели книги.
Book *book = [Book lastItemWithFormat:@"name = %@ && author = %@", @"Napoleon Bonnaparte", @"John Stevens Cabot Abbott"];

Удаление одной записи:

[CoreDataEnvir asyncMainInBlock:^(CoreDataEnvir *db) {
        [db deleteDataItem:book];
}];

Удаление записей:

[CoreDataEnvir asyncMainInBlock:^(CoreDataEnvir *db) {
        [db deleteDataItemSet:books];
}];

Параллельное программирование:

В основном потоке:

Вы можете выполнять лёгкие операции в основном потоке. Все вышеперечисленные операции должны выполняться в основном потоке по умолчанию, иначе будет вызвано исключение CoreDataEnvir. Поэтому вам следует быть осторожным.

Также вы можете явно использовать основной поток:

Это позволит вам чувствовать себя более уверенно :-)

[CoreDataEnvir asyncMainInBlock:^(CoreDataEnvir *db) {
    [Book insertItemWithFillingBlock:^(id item) {
        item.name = @"CoreData tutorial";
        item.author = @"Headwindx";
    }];
}];

На фоновом потоке:

Для вас уже подготовлена фоновая очередь GCD в CoreDataEnvir.

Блок asyncBackgroundInBlock сохранит кэш памяти в файл db после завершения работы void(^)(CoreDataEnvir *).

Вам не нужно использовать [db saveDataBase] как в старой версии.


[CoreDataEnvir asyncBackgroundInBlock:^(CoreDataEnvir *db) {
    [Book insertItemOnBackgroundWithFillingBlock:^(id item) {
        item.name = @"CoreData tutorial";
        item.author = @"Headwindx";
    }];
}];

Это становится более удобным при параллельном программировании.

Удобные методы:

Должны выполняться в основной очереди:

  • + (void)asyncMainInBlock:(void(^)(CoreDataEnvir *))CoreDataBlock;
  • + (id)insertItemWithFillingBlock:(void(^)(id))fillingBlock;
  • + (NSArray *)itemsWithFormat:(NSString *)fmt,...; ...

Должны выполняться в фоновой очереди, вы можете использовать эти API и некоторые методы с именем Background:

  • + (void)asyncBackgroundInBlock:(void(^)(CoreDataEnvir *))CoreDataBlock;
  • + (id)insertItemOnBackgroundWithFillingBlock:(void(^)(id))fillingBlock;
  • + (NSArray *)itemsOnBackgroundWithFormat:(NSString *)fmt,...; ...

Или вы хотите выполнить какую-либо операцию в своей собственной очереди отправки, вы можете выбрать следующие API:

  • + (CoreDataEnvir *)createInstance; лучше сохранить этот экземпляр для будущего использования.
  • - (void)asyncInBlock:(void(^)(CoreDataEnvir *))CoreDataBlock;

Если вы новичок в CoreData, пожалуйста, соблюдайте следующие правила:

  • Если вы хотите сохранить объекты NSManagedObject, вам не следует освобождать объект CoreDataEnvir, иначе он выйдет из строя.

  • Если вы работаете с базой данных в нескольких потоках, убедитесь, что у вас есть один NSManagedObjectContext в отдельном потоке или очереди GCD. Иначе может возникнуть конфликт, когда один поток читает данные, а другой записывает данные.

PS: Таким образом, в CoreDataEnvir убедитесь, что ваш объект NSManagedObject получен из [CoreDataEnvir mainInstance] в основном потоке или...

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Лёгкая оболочка для CoreData. Обеспечивает простые операции CRUD с данными, не требуя сложных настроек среды CoreData; также предоставляет различные режимы работы, позволяя выбирать разные файлы отображения графических моделей xcdatamodeld и сохранять данные в любом указанном файле. Эффективная поддержка многопоточных операций с данными обеспечи... Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/dehengxu-CoreDataEnvirSample.git
git@api.gitlife.ru:oschina-mirror/dehengxu-CoreDataEnvirSample.git
oschina-mirror
dehengxu-CoreDataEnvirSample
dehengxu-CoreDataEnvirSample
master