2016-04-11 2 views
3

Я хотел получить только тех пользователей, у которых нет nullфамилия тип NSString.Как проверить объект базы данных типа NSString null?

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"USER" inManagedObjectContext:dbHandler.managedObjectContext]; 

    NSMutableArray * predicateArray = [[NSMutableArray alloc] init]; 

    NSPredicate * predicate1 = [NSPredicate predicateWithFormat:@"id = %@",abc]; 
    [predicateArray addObject:predicate1]; 

    NSPredicate * predicate2 = [NSPredicate predicateWithFormat:@"lastname != %@",nil]; 
    [predicateArray addObject:predicate2]; 

    NSCompoundPredicate * resultantPredicate = [NSCompoundPredicate andPredicateWithSubpredicates:predicateArray]; 

    [fetchRequest setEntity:entity]; 
    [fetchRequest setPredicate:resultantPredicate]; 

    NSError *fetchError = nil; 

    NSArray *result = [dbHandler.managedObjectContext executeFetchRequest:fetchRequest error:&fetchError]; 

Predicate2 не работает в течение некоторого reason.After применять его объект не возвращается, даже если БД содержит некоторые непустой строкой значения LastName. Пожалуйста, сообщите, что не так в коде, или есть способ извлечь ненулевую строку ТОЛЬКО из основных данных.

+0

Поместите слово 'nil' непосредственно в строку формата. – Avi

+0

nil, Nil, Null не работал! – djay

+0

@ Divjyot - попробуйте дублировать ответ один раз, если повторный ответ не разрешен. Ур проблема ping здесь, я снова открываю ур вопрос –

ответ

0

Вы можете использовать метод, который описан here.

Просто замените

[NSPredicate predicateWithFormat:@"lastname != %@",nil] 

с

[NSPredicate predicateWithFormat:@"lastname.length > 0"] 

UPDATE

Это предикаты возвратит ноль объектов

[NSPredicate predicateWithFormat:@"lastname = NULL"]; 
[NSPredicate predicateWithFormat:@"lastname = NIL"]; 

Этот предикат вернет пустые строки

[NSPredicate predicateWithFormat:@"lastname = ''"]; 
+0

будет ли он работать и с основными данными? – djay

+0

Yeap. Почему нет? :) – Che

+0

.length свойство недоступно в данных ядра, и если строка пуста, это не сработает (потому что 0 == 0). Аналогично, если имя равно nil, оно также потерпит неудачу, потому что [nil length] == 0. как wriiten в http://stackoverflow.com/questions/7369390/nspredicate-to-test-for-null-and-blank- строки – djay

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