Iphone 如何创建NSManagedObjectContext

Iphone 如何创建NSManagedObjectContext,iphone,core-data,nsmanagedobjectcontext,Iphone,Core Data,Nsmanagedobjectcontext,在iPhone的核心数据中,我试图将数据保存到NSManagedObjectContext时遇到各种各样的错误 我相信我的问题都与我使用多线程中使用的NSManagedObjectContext有关 所以我想创建一个新的NSManagedObjectContext并尝试一下,但我找不到简单创建新实例的示例代码 我知道这很简单,但我真的很感激这里的任何帮助 注意,我在Apple docs上看到了这篇文章: 但这使用了一些我不熟悉的代码,比如iPhone不支持的XMLStore等。这是创建新上下文的

在iPhone的核心数据中,我试图将数据保存到
NSManagedObjectContext
时遇到各种各样的错误

我相信我的问题都与我使用多线程中使用的
NSManagedObjectContext
有关

所以我想创建一个新的
NSManagedObjectContext
并尝试一下,但我找不到简单创建新实例的示例代码

我知道这很简单,但我真的很感激这里的任何帮助

注意,我在Apple docs上看到了这篇文章:


但这使用了一些我不熟悉的代码,比如iPhone不支持的XMLStore等。

这是创建新上下文的代码:

- (NSManagedObjectContext *)managedObjectContext {
    NSManagedObjectContext *managedObjectContext = nil;

    NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
    if (coordinator != nil) {
        managedObjectContext = [[NSManagedObjectContext alloc] init];
        [managedObjectContext setPersistentStoreCoordinator:coordinator];
        [managedObjectContext setUndoManager:nil];
    }
    return [managedObjectContext autorelease];
}
只需创建上下文的新实例并设置您想要使用的存储即可

如果你有多家店铺,你会选择这样的方式:

- (NSManagedObjectContext *)managedObjectContextForStore:(NSString *)store {
    NSManagedObjectContext *managedObjectContext = nil;

    NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinatorForStore:store];
    if (coordinator != nil) {
        managedObjectContext = [[NSManagedObjectContext alloc] init];
        [managedObjectContext setPersistentStoreCoordinator:coordinator];
        [managedObjectContext setUndoManager:nil];
    }
    return [managedObjectContext autorelease];
}
有关更多信息,请查看


干杯

谢谢VFN,不过
[self-persistentStoreCoordinator]
来自哪里?这是从超类继承的吗?我的代码在一个实用程序类中,我应该如何获取persistentStoreCoordinator?您需要实现设置持久性存储的代码。看看这个来自苹果的示例:从主线程使用MOC获取persistentStoreCoordinator安全吗?我对此表示怀疑,但我只是想问一下……好吧,与其在线程上创建MOC,我的观点是必须在一个中心位置上创建上下文,然后发送(通常是AppDelegate)并传递给其他对象。虽然我看不到从其他线程的MOC获取persistentStoreCoordinator有任何问题。persistentStoreCoordinator应该是线程安全的,因为它没有被修改成MOC。你这么说很有趣,因为我刚刚看到了TopSongs应用程序,并通读了它是如何设置MOC的,而且它似乎是以与我相同的方式(至少类似)完成的。。。但我似乎随机得到了如下错误:
NSManagedObjectContext无法删除其他上下文中的对象
。这让我感到困惑…[可能对创建和管理NSManagedObjectContext非常有帮助。