无法理解何时在Coredata中使用int或string

时间:2017-05-24 18:34:08

标签: ios swift string core-data int

iOS 10,Swift3

我正在创建一个应用程序,用户从服务器获取他们的日常议程,我想在Coredata中保存他们的日程安排。来自API的简单json就像

{
                "id": 11639002,
                "subject": "Coffeee",
                "startUTC": "2017-05-03T15:00:00+00:00",
                "endUTC": "2017-05-03T16:00:00+00:00"
}

如果在服务器端进行了更改,我想更新约会,我也不想保存重复的条目。此外,我希望能够按startDate排序这一行。我想通过id

来绕过这个约会行

我认为这个问题的好方法就像这样

@NSManaged public var id: Int32
@NSManaged public var subject: String?
@NSManaged public var startUTC: NSDate?
@NSManaged public var endUTC: NSDate?

我在这里读到的每一篇文章都说Coredata不是ORM或关系型数据库,因此开发人员应该摆脱这种思维状态。

当我尝试复制像服务器端那样的unique_id方法时,我不明白如何以及为什么我需要摆脱关系数据库的思维模式。

本教程http://dorianroy.com/blog/2015/09/how-to-implement-unique-constraints-in-core-data-with-ios-9/

  

不再获取/ if / else

     

到目前为止,当您想要将数据对象导入Core Data时   在文件或网络请求中,您必须为每个请求创建一个获取请求   带有与id匹配的谓词的传入对象然后执行   它来寻找该对象的现有版本。如果你找到一个,   你会更新它,否则创建一个新对象。独特   约束,您不必再执行此fetch / if / else并保存   解析数据时有很多数据库请求。

Unique Constraints must be strings

所以我想做的就是不要有重复的行,并按照它的id更新行。

我应该使用什么方法?我是否必须在该博客帖子中制作id字符串,或者旧的常规32位整数方法也可以使用?

1 个答案:

答案 0 :(得分:0)

最重要的是,您应该编写您理解的代码,并以其他人第一次看到它的方式理解。 确实,核心数据不是关系型数据库,但它是一个包装器。因此,如果它可以使用该范例解决您的问题,那么它很简单且易于理解,我说要去实现它。准备在未来的某个地方重新审视您的实施。但到那时你会更好地理解你的问题。