2

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

+ (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 资源管理器探索 Core Data 数据库,并且serverId我要求有元素,所以应该至少有 1 个。

我做谓词错了吗?

上面的代码是在一个NSManagedObject类中实现的,调用方式如下:

 [User managedObjectWithServerId:whatev inManagedObjectContext:context];

User我的模型和子类中的实体在哪里NSManagedObject

4

1 回答 1

0

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

如果您在创建新的 UIManagedDocument 数据库文件之前不删除以前的 UIManagedDocument 数据库文件,CoreData 似乎会出现一些问题。

条件固定后,我没有收到 NSPersistentStoreCoordinator 崩溃错误,我可以看到所有带有调试功能的 SQL 方法,而且我的提取当然可以正常工作。

感谢所有尝试提供帮助的人,很抱歉浪费您的时间:)

于 2013-01-14T11:20:18.943 回答