这个NSFetchRequest有什么问题?

时间:2013-01-14 09:35:32

标签: ios ios5 core-data

简单的问题。谁能告诉我这段代码有什么问题?

+ (NSManagedObject*) managedObjectWithServerId:(NSInteger)serverId inManagedObjectContext:(NSManagedObjectContext*)context{

    //Execute request and get all the results
    NSError * error = nil;
    NSFetchRequest * request = [NSFetchRequest fetchRequestWithEntityName:NSStringFromClass(self)];
    request.predicate = [NSPredicate predicateWithFormat:@"serverId == %@" argumentArray:[NSArray arrayWithObject:[NSNumber numberWithInteger:serverId]]];
    NSArray * results = [context executeFetchRequest:request error:&error];
}

结果数组始终是一个带有0个对象的NSArray,没有给出任何错误。只是一个0计数的数组。 并且不可能总是返回0个元素,我正在使用SQLite资源管理器探索核心数据数据库,并且我正在请求serverId的元素,因此应该至少有1个。

我做错了吗?

上述代码在NSManagedObject类别中实现,并按如下所示进行调用:

 [User managedObjectWithServerId:whatev inManagedObjectContext:context];

User是我的模型中的实体和NSManagedObject的子类。

1 个答案:

答案 0 :(得分:0)

问题已解决,似乎我总是因为意外情况而重新创建数据库文件。我注意到因为所有主键总是从1开始。

如果在创建新UIManagedDocument数据库文件之前未删除先前的UIManagedDocument数据库文件,则CoreData似乎存在一些问题。

在条件修复的情况下,我没有得到NSPersistentStoreCoordinator崩溃错误,我可以看到所有带调试的SQL方法,我的提取当然可以正常工作。

感谢所有尝试过帮助的人,并且抱歉浪费你的时间:)