iphone核心数据保存不起作用

时间:2010-07-15 07:35:36

标签: iphone objective-c core-data nspredicate

我尝试使用Core Data保存Device类列表(自定义类)并检索它。但是在我保存之后,我的查询非常简单,并没有返回任何记录。

我保存记录的调用始终返回YES并且没有错误:

BOOL resultOfSave = [managedObjectContext save:&err];

我的属性userLogin搜索的谓词是这样的:

- (NSArray *) devicesForUser:(NSString *)username 
{
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Device" inManagedObjectContext:managedObjectContext];
[request setEntity:entity];

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"userLogin = %@", username];
[request setPredicate:predicate];

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"macAddress" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[request setSortDescriptors:sortDescriptors];
[sortDescriptors release];
[sortDescriptor release];

NSError *error = nil;
NSArray *fetchResults = [managedObjectContext executeFetchRequest:request error:&error];
if (fetchResults == nil) {
    // Handle the error.
    NSLog(@"ERROR: nil fetch result array");
}

[request release];
NSLog(@"devicesForUser [%@] count %d", username, [fetchResults count]);
return fetchResults;    
}

但是我总是得到零结果,如果我摆脱了预定义,我得到所有对象,如果我遍历它们,我可以看到至少有一个对象的userLogin属性设置为用户名我传入...

有没有人有这样的问题?

感谢您提供任何帮助

标记

1 个答案:

答案 0 :(得分:2)

在你的谓词中,改变:

@"userLogin = %@"

...为:

@"userLogin == %@"