Начальное значение свойств Core Data Entities? - PullRequest
0 голосов
/ 01 февраля 2010

У меня есть несколько основных объектов данных, которые содержат кучу пустых NSString свойств.

Я анализирую некоторый XML и устанавливаю свойства, которыми могу воспользоваться, и хотел бы установить для «пустых» значение «n / a», как в «not available». Поэтому, если мой XML не содержит значений, он как бы приводит в порядок Entity, давая ему строку «n / a», которую я могу проверить позже, а также, если один из них сделает его UILabel, он не будет отображать (ноль) .. что приводит меня к моему вопросу:

Я делаю это, чтобы проверить, не установлено ли свойство объекта уже, nil или пусто:

    for(NSString *s in allPossibleStrings) {

        if([[f valueForKey:s] isKindOfClass:[NSString class]] && [[f valueForKey:s] isEqualToString:@""]) {
            [f setValue:@"n/a" forKey:s];
        }
        if ([[f valueForKey:s] isKindOfClass:[NSString class]] && [f valueForKey:s] == nil) {
            [f setValue:@"n/a" forKey:s];               
        }
    }

Оказывается, однако, что я все еще получаю множество значений, отображаемых как (ноль) . Поэтому я подумал, может ли свойство быть чем-то еще, кроме @"" пустым или (nil)

Я считаю, что NSManagedObject должен быть совместимым с KVC, поэтому я провел тест, в котором я скопировал свое свойство NSManagedObject по свойству, единственное отличие состоит в том, что он является подклассом только NSObject вместо NSManagedObject. К сожалению, это ведет себя точно так же. Это также оставляет значения как (ноль)

Надеюсь, кто-то может понять, где я ошибаюсь с этими строковыми тестами:)

Спасибо

Ответы [ 3 ]

4 голосов
/ 01 февраля 2010

Вы можете установить значение свойства по умолчанию для вашей сущности на «N / A» (это хорошая практика, потому что вы можете использовать sqlite для доставки приложений iPhone, и это не очень хорошо работает с нулевыми значениями, потому что sqlite и какао не имеет одинакового видения «ноль») и установите «опционально» на «Нет».

 if([[f valueForKey:s] isKindOfClass:[NSString class]] && [[f valueForKey:s] isEqualToString:@"NA"]) {
       //Tell your program to know that it's null if it needs to know
    }

Приветствия

1 голос
/ 01 февраля 2010

Что такое allPossibleStrings? Вы можете сделать это, чтобы получить все свойства:

NSEntityDescription *entity = [NSEntityDescription entityForName:@"MyEntityName" inManagedObjectContext:moc];

for (NSString *attr in [entity attributesByName]) {
    [object setValue:@"n/a" forKey:attr];
}
0 голосов
/ 02 февраля 2010

Проблема в том, что когда что-то равно нулю, то, что вы можете получить из любого свойства управляемого объекта (не только строки), является объектом NSNull.Так что если вы проверите также для isKindOfClass:[NSNull class] Я думаю, ваш код будет делать то, что вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...