У меня есть следующий класс
#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>
@interface Bankdaten : NSManagedObject
@property (nonatomic, retain) NSString * blz;
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSString * https;
@end
и реализация
#import "Bankdaten.h"
@implementation Bankdaten
@dynamic blz;
@dynamic name;
@dynamic https;
@end
Я проверил, что данные для этого объекта правильно сохраняются данными ядра в соответствующей таблице в моей sqliteбаза данных.
Теперь я хочу получить определенный объект, выполнив этот запрос:
-(Bankdaten*) ladeBankdaten:(NSString*) blz
{
NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"Bankdaten" inManagedObjectContext:moc];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:entityDescription];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(blz == '%@')", blz];
[request setPredicate:predicate];
NSError *error = nil;
NSArray *array = [moc executeFetchRequest:request error:&error];
if (array == nil) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
if( [array count] == 0 )
return nil;
return [array objectAtIndex:0];
}
Проблема: в этом случае массив всегда содержит нули объектов, и поэтому мой метод возвращает ноль, хотя blzПараметр должен соответствовать определенному значению в базе данных.Поэтому запрос на выборку должен быть положительным.Если я прокомментирую строку
[request setPredicate:predicate];
Так, что для этого запроса не будет задан предикат, данные будут загружены нормально, поэтому я думаю, что предикат каким-то образом используется мной неправильно.Что я тут не так делаю?