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

Ios 无法理解何时在Coredata中使用int或string,ios,swift,string,core-data,int,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

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或关系数据库,所以开发人员应该摆脱这种思维状态

我不明白,当我试图复制服务器端这样的独特方法时,我如何以及为什么需要摆脱关系数据库的思维方式

本教程

没有更多的fetch/if/else

直到现在,当您希望将数据对象从导入到核心数据时 对于文件或网络请求,您必须为每个请求创建一个获取请求 带有与id匹配的谓词的传入对象,然后执行 它需要查找该对象的现有版本。如果你找到了, 您将更新它,否则将创建一个新对象。独特的 约束条件下,您不必再执行此fetch/if/else和save操作 解析数据时会出现大量数据库请求

唯一约束必须是字符串

所以我要做的就是不要有重复的行,并通过它的id更新行


我应该使用什么方法?我是否必须使
id
s字符串像在那篇博文中那样,或者旧的常规32位整数方法也可以工作

最重要的一点是,您应该编写您理解的代码,并且以其他人第一次看到它时可以理解的方式编写代码。 诚然,核心数据不是关系数据库,但它是关系数据库的包装器。所以,如果你能用这个范式解决你的问题,我说,这是简单易懂的。准备好在以后的某个地方重新审视您的实现。但到那时你会更好地理解你的问题