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