0

Мне нужно проверить, есть ли какие-либо nil значения в моем managedObjectContext перед их сохранением. В тот момент я делаю тесты по каждому ключу с помощью операторов if. У меня есть много атрибутов в моем объекте NGLS, так как вы можете видеть, что тестирование каждой клавиши для значений nil не кажется очень практичным.Проверьте наличие нескольких значений nil в объекте Core Data managedObject?

if ([_managedObjectNGLS valueForKey:@"q1"] == nil){ 
    [_managedObjectNGLS setValue:@"" forKey:@"q1"]; 
} 
if ([_managedObjectNGLS valueForKey:@"q1More"] == nil){ 
    [_managedObjectNGLS setValue:@"" forKey:@"q1More"]; 
} 
.... 

// Save managedObject 
NSError *error; 
[[self.managedObjectNGLS managedObjectContext] save:&error]; 
NSLog(@"%@", self.managedObjectNGLS); 
NSLog(@"Data saved"); 

Часто есть много nil ценности, которые мне нужно изменить вручную с помощью многих if statements. Есть ли способ пакетной проверки всех объектов в моей сущности для значений nil? И если да, то есть ли способ заменить все из них набором string сразу? Благодарю.

+1

Вы имеете в виду что-то вроде этого: 'NSArray * AllKeys = @ [@» q1 ", @" q1More "и т. д.], для (NSString * aKey in allKeys) {if ([_managedObjectNGLS valueForKey: aKey] == nil) {[_ managedObjectNGLS setValue: @" "forKey: aKey];}}'? – Larme

+0

Это работает идеально для моих нужд, спасибо большое! – rosshump

ответ

2

Основные данные включают в себя мощные capabilities for validation. В рамках сохранения Core Data проверяет свойства объекта, гарантируя, что сохраняется только действительный объект.

Вы можете реализовать правила проверки в Core Data Model Editor или самостоятельно в коде путем реализации key-value validation в подклассе управляемого объекта.

Например, с помощью редактора модели вы можете установить свойство быть не обязательным и обеспечить значение по умолчанию:

Non optional with default

+0

Спасибо за объяснение и ссылки на документацию, это очень помогает! Я помечаю ваш ответ так же правильно, как и собираюсь использовать смесь этого плюс решения Larme (используя 'for loop' в' array'), поскольку они оба полезны для того, что мне нужно. Еще раз спасибо. – rosshump

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