Core data 如何处理UIManagedDocument?

Core data 如何处理UIManagedDocument?,core-data,ios5,uimanageddocument,Core Data,Ios5,Uimanageddocument,首先,我应该提到这是我在这个网站上的第一篇帖子。我试着教自己编程iOS,在我的谷歌搜索中,我发现我经常被引导到这里。所以,感谢所有在这里做出贡献的人。你已经帮了我很多了 我一直在上斯坦福CS193P课程,我很喜欢。但我现在被卡住了,不知道该转向哪里 我的问题是UIManagedDocument + (UIManagedDocument *)sharedManagedDocument { static UIManagedDocument *sharedDocument = nil;

首先,我应该提到这是我在这个网站上的第一篇帖子。我试着教自己编程iOS,在我的谷歌搜索中,我发现我经常被引导到这里。所以,感谢所有在这里做出贡献的人。你已经帮了我很多了

我一直在上斯坦福CS193P课程,我很喜欢。但我现在被卡住了,不知道该转向哪里

我的问题是UIManagedDocument

+ (UIManagedDocument *)sharedManagedDocument
{
    static UIManagedDocument *sharedDocument = nil;

    NSURL *url = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
    url = [url URLByAppendingPathComponent:@"DefaultAppDatabase"];
    // url is "<Documents Directory>/<DefaultAppDatabase>"

    // Create the shared instance lazily upon the first request.
    if (sharedDocument == nil) {
        sharedDocument = [[UIManagedDocument alloc] initWithFileURL:url];
    }

    if (sharedDocument.fileURL != url) {
        UIManagedDocument *newDocument = [[UIManagedDocument alloc] initWithFileURL:url];
        sharedDocument = newDocument;
    }

    NSLog(@"SharedDocument: %@", sharedDocument);

    return sharedDocument;
}
我厌倦了制作一个简单的应用程序来测试我的新技能。这就是它所做的:

一个简单的会计应用程序,跟踪个人捐款筹款活动

我在每个选项卡上都有一个UITabBar,它允许您: 1.跟踪参与者(玩家)-这将连接到通讯簿,允许您添加他们或将他们保留在此应用程序中。 2.管理活动(事件)-您可以添加、编辑或删除活动,然后将参与者添加到其中,然后可以添加他们在该活动中带来的内容(银行)。 3.设置。-我添加了一些按钮来帮助我解决问题,包括一个清除所有数据的重置按钮和一个“虚拟数据”按钮

我有三个coreData实体。玩家、事件和银行都与其他两个有关系

当我第一次尝试制作此应用程序(iOS5之前)时,我使用appDelegate创建ManagedObjectContext并将其传递给我的ViewController。成功了。但是现在我应该使用UIManagedObjectDocument,而不是AppDelegate。我相信我理解iCloud的原理和集成。(我可能错了)

使用该类中的示例和我在网上可以找到的内容,我创建了一个帮助器类,它将在我的UINavigationControllers和ManagedDocument中提供我的每个ViewController中的第一个

+ (UIManagedDocument *)sharedManagedDocument
{
    static UIManagedDocument *sharedDocument = nil;

    NSURL *url = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
    url = [url URLByAppendingPathComponent:@"DefaultAppDatabase"];
    // url is "<Documents Directory>/<DefaultAppDatabase>"

    // Create the shared instance lazily upon the first request.
    if (sharedDocument == nil) {
        sharedDocument = [[UIManagedDocument alloc] initWithFileURL:url];
    }

    if (sharedDocument.fileURL != url) {
        UIManagedDocument *newDocument = [[UIManagedDocument alloc] initWithFileURL:url];
        sharedDocument = newDocument;
    }

    NSLog(@"SharedDocument: %@", sharedDocument);

    return sharedDocument;
}
CS193P的讲师Paul在作业6中建议使用助手方法通过块传递UIManagedDocument。我得到了积木背后的理论,但我还没有完全理解它们,所以我没有排除我的答案可能也在那里


非常感谢您的帮助或为我指明了做更多研究的正确方向。对不起,这篇文章太长了,我想尽量说清楚。

我想得太多了。艾伦在这篇文章中完美地问了我的问题:

问题和答案把一切都弄清楚了

谢谢