CoreData中的单例实体

时间:2011-05-13 09:04:35

标签: iphone cocoa-touch core-data

我可能会在标题中使用单词“singleton”使我的术语不正确。 我现在正在寻找一种好的技术。我有一个名为user的实体,用于存储登录数据的用户,例如用于发出服务器请求的会话密钥。我只想要其中一个实体存在。这样做有标准的技术吗?

到目前为止我所拥有的是

NSManagedObjectContext *moc = [self managedObjectContext];
    NSEntityDescription *entityDescription = [NSEntityDescription
                                              entityForName:@"UserEntity" inManagedObjectContext:moc];
    NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease];
    [request setEntity:entityDescription];


NSArray *array = [moc executeFetchRequest:request error:&error];
    if (array == nil)
    {
        // Deal with error...
    }

    if ([array count]==0) {
         //first run of app

    }else if([array count]==1)
    {
        // id like the code to enter here after every app run except for the first one

    }else
    {

        //dont want this to happen
    }

2 个答案:

答案 0 :(得分:3)

我使用Matt Gallagher在他的文章Singletons, AppDelegates and top-level data中描述的方法。

它使用宏来创建“合成单例”类,然后您可以从任何地方访问它。非常方便的会话,托管对象上下文等。否则你必须在任何地方通过这些。

答案 1 :(得分:2)

您的方法应该有效,并且具有灵活性。考虑一下您的应用的未来版本能够管理多个帐户的可能性;如果您将“单身人士”建模为常规实体,则可以轻松实现此目的。

如果您100%确定自己从未想过这样,那么您可以使用持久性商店的metadata属性进行此类操作。