2012-04-25 5 views
9

Я надеюсь найти способ проверки, если атрибут CoreData пуст. Сам атрибут имеет двоичные данные типа. Если атрибут пуст, я могу сказать, что мой класс загружает и сохраняет некоторые данные в этот атрибут.Проверьте, не является ли атрибут CoreData пустым

Согласно документации CoreData, вы не должны продолжать выборку, чтобы увидеть, существуют ли объекты. Мне интересно, есть ли способ сделать это? не нарушая этого «закона»?

Это моя первая попытка использования CoreData. Затем я добавляю его в свой код, что немного больнее, но в целом до сих пор все, кажется, все в порядке. Мне просто нужно выяснить логический способ проверки, имеет ли атрибут значения. Если это не так, мне нужно загрузить и сохранить новые данные, если это произойдет, я просто использую то, что находится в атрибуте.

Update:

Я только что нашел этот метод в рамках CoreData, что я читал, хотя, пытаясь поймать перерыв на это. Не уверен, что это поможет .. что вы, ребята, думаете?

willAccessValueForKey: Обеспечивает поддержку ключевого значения наблюдающего Access уведомления.

  • (void) willAccessValueForKey: (NSString *) key Параметр key Имя одного из свойств получателя. Обсуждение См. didAccessValueForKey: для получения более подробной информации. Вы можете вызвать этот метод с ключевым значением nil, чтобы убедиться в том, что произошел сбой, как , проиллюстрированный в следующем примере.

[aManagedObject willAccessValueForKey: nil];

Не уверен, что действительно. То, что я не понимаю, это Обеспечивает поддержку уведомления о доступе к знанию. ???

ответ

11

Это уведомление предназначено для того, когда значение будет доступно.

Если я правильно вас понимаю, вы не хотите видеть, существует ли сущность, но атрибут внутри объекта. Итак, я предполагаю, что вы отметили его как необязательный атрибут.

Предположим, у вас есть атрибут двоичных данных, называемый rawData. Если вы хотите найти все объекты @ MyEntity в базе данных, у которых нет данных, заданных для этого атрибута, вы cn выдаете этот запрос на выборку.

NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"MyEntity"]; 
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"rawData = nil"]; 
NSArray *results = [managedObjectContext executeFetchRequest:fetchRequest error:0]; 
+0

okay прохладный .. спасибо. Его просто беспокоит, потому что я читал, что выдача многих запросов на выбор - это непослушная вещь.: P –

+3

Вы всегда можете помешать кому-либо создавать объект с пустым атрибутом, сделав его необязательным. Или вы можете создавать объекты, которые отслеживают изменения базы данных и добавлять/удалять объекты в глобальный список, если они имеют пространственное значение атрибута nil/non-nil. –

Смежные вопросы