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

Posted

技术标签:

【中文标题】在核心数据中设置一个自动递增的字段【英文标题】:Set a field that increment automatically in core data 【发布时间】:2012-04-28 13:15:37 【问题描述】:

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

【问题讨论】:

是什么导致计数器增加?节省?插入?? 【参考方案1】:

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

NSDate *creationDate = [NSDate date];

对 NSDate 进行排序、将其转换为双精度等非常简单。

【讨论】:

【参考方案2】:

我认为内部和自动 自动增量 在 Core Data 中是不可能的。 您需要为此使用自定义解决方案。

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

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

【讨论】:

我有一个代码字段,想自动为其设置值 并将这个计数器值添加到核心数据中。 所以取一个int变量并将其添加到核心数据中并保持计数++; 我现在使用像你一样的方式,但我想自动这样做 好的,在你的核心数据中添加这个计数器之后,只需执行 counter++ 并存储在 NSUSerDefault 中,每次你想要添加这个计数器时,你需要从 NSUSerDefault 中获取它。【参考方案3】:

如果您只想要一个在插入时自动递增的字段,那么使用 Core Data afaik 是不可能的。您将不得不提出一个自定义解决方案。哪种解决方案取决于您尝试解决的问题。

Core Data 确实为使用 Core Data 持久化的每个对象维护一个唯一的对象 ID(或 URI)。还有更多关于对象 ID 和 URI 的 here。

【讨论】:

【参考方案4】:

是的,这是可能的,但可能不是您想的那样。 :) -- 含义,而不是“关键”字段。

您可以创建一个“计数器”NSManagedObject,该计数器在应用启动时初始化,并在跟踪“当前号码”和“下一个号码”后出现属性时被要求这样做。

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

有一个示例代码“iClass”,我在 apple.com 上找不到链接,但是当有一个目录 /Developer/Examples/ 时,它是随 Xcode 一起安装的CoreData 在 Xcode 的早期安装中——你可能没有这个,如果你有的话,看看它可能会很有用。

【讨论】:

【参考方案5】:

只需将下面的 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);

【讨论】:

以上是关于在核心数据中设置一个自动递增的字段的主要内容,如果未能解决你的问题,请参考以下文章

Azure 逻辑应用 - MySQL 连接器 - 根据需要插入显示自动递增主键字段的行操作

如何在领域android中设置主键自动增量

MySQL:ID号自动递增的不一致

多个数据库的休眠自动增量字段

跨平台:如何在 UWP 中设置不同的递增内部版本号并保持版本名称,如 iOS/Android

核心数据 id 自动递增