我正在尝试学习如何使用Core Data和UIManagedDocuments。首先,我创建/打开文档:
NSURL *url = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
url = [url URLByAppendingPathComponent:@"ProjectSSBDB"];
document = [[UIManagedDocument alloc] initWithFileURL:url];
if ([[NSFileManager defaultManager] fileExistsAtPath:[url path]])
{
[document openWithCompletionHandler: ^(BOOL success)
{
if (success) [ProjectSSViewController documentIsReady];
if (!success) NSLog(@"Couldn't open document at %@", url);
}];
}
else
{
[document saveToURL:url forSaveOperation:UIDocumentSaveForCreating completionHandler:^(BOOL success)
{
NSLog(@"Returned %d", success);
if (success) [ProjectSSViewController documentIsReady];
if (!success) NSLog(@"Couldn't create document at %@", url);
}];
}
然后,一旦创建并成功打开文档,我就这样做:
if (document.documentState == UIDocumentStateNormal)
{
NSManagedObjectContext *context = [document managedObjectContext];
Exercise *exercise = (Exercise *) [NSEntityDescription insertNewObjectForEntityForName:@"Exercise" inManagedObjectContext:context];
}
这里的最后一行似乎是给我错误的一行:'+ entityForName:nil不是合法的NSManagedObjectContext参数,搜索实体名称'Exercise''
我确实创建了一个具有“练习”实体的数据模型。从我已经完成的阅读中,它可能与不同线程与上下文交互的方式有关吗?但我不太确定,任何指导都会很棒!
答案 0 :(得分:0)
+ entityForName:nil不是合法的NSManagedObjectContext参数,用于搜索实体名称“练习”
只有3种可能性:
您的案例中的大多数概率都是第二个(可能是您的托管对象上下文为Nil)。