设置在核心数据中自动递增的字段

时间:2012-04-28 13:15:38

标签: objective-c xcode macos cocoa core-data

在像SqlServer这样的数据库中,我们可以设置一个自动递增的字段(Identity Increment),是否可以在核心数据中执行此操作?

5 个答案:

答案 0 :(得分:3)

考虑使用creationDate字段。当您创建对象时,只需添加

NSDate *creationDate = [NSDate date];

非常简单地对NSDate进行排序,将其转换为double等等。

答案 1 :(得分:1)

我认为Core Data中无法实现内部和自动自动增量。 您需要使用自定义解决方案。

你能告诉我你真正想做什么吗?

我遇到了同样的问题,我正在使用NSUserDefault存储我的计数器。

答案 2 :(得分:1)

是的,这是可能的,但也许不是你想到的方式。 :) - 意思,而不是'关键'字段。

你可以创建一个'计数器'NSManagedObject,它会在应用启动时初始化,并在追踪'当前数字'和'下一个数字'财产时要求它这样做。

您可以检索当前数字并将其指定为需要具有此唯一且递增的“数字”的对象的属性值。

有一个示例代码' iClass ',我在apple.com上找不到链接,但是当有一个目录 / Developer / Examples /时,它与Xcode一起安装早期安装的Xcode上的CoreData - 您可能没有这个,如果您这样做,查看它可能会有用。

答案 3 :(得分:1)

将dode放入您的测试项目中,以测试如何增加我们的计数器。

从该代码中,您将了解您需要做什么,并根据需要更改此代码。

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    int count;
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
    count = [prefs integerForKey:@"integerKey"];
    NSLog(@"counter is >>>>%d",count);
    [prefs setInteger:count forKey:@"integerKey"];

    // code for adding record to core data

    count++;
    NSUserDefaults *prefs1 = [NSUserDefaults standardUserDefaults];
    [prefs1 setInteger:count forKey:@"integerKey"];
    NSLog(@"counter is >>>>%d",count);
}

答案 4 :(得分:0)

如果您只想要一个在插入时自动递增的字段,则无法使用Core Data afaik。您必须提出自定义解决方案。哪种解决方案取决于您尝试解决的问题。

Core Data确实为使用Core Data保留的每个对象维护唯一的对象ID(或URI)。对象ID和URI的here还有更多内容。