【发布时间】:2011-11-10 01:13:09
【问题描述】:
我有以下课程
#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];
}
问题:在这种情况下,数组总是包含零对象,因此我的方法返回 nil,尽管 blz 参数必须匹配数据库中的某个值。所以获取请求应该是肯定的。如果我评论该行
[request setPredicate:predicate];
如果没有为此请求设置谓词,则数据加载正常,因此我认为谓词在某种程度上被我错误地使用了。我在这里做错了什么?
【问题讨论】: