RestKit .20 with CoreData - 如何设置默认值

Posted

技术标签:

【中文标题】RestKit .20 with CoreData - 如何设置默认值【英文标题】:RestKit .20 with CoreData - How to set default values 【发布时间】:2013-09-04 00:47:48 【问题描述】:

我正在使用带有 CoreData 的 RestKit .20。我让 RestKit 成功调用 JSON API 并将响应存储到 CoreData 模型,没有任何问题。

我的问题是如何在映射时设置不在响应中的默认值?

在我的情况下,我正在将警报列表下载到警报收件箱。我需要显示在本地设备上读取了哪些警报。我在实体模型上有一个名为 AlertRead (boolean) 的 CoreData 属性,当用户将 Alert 标记为 1=read 时,我会更新该属性。

我的问题是如何在检索和映射数据时将属性的默认值设置为 0=unread。

我尝试在 xcdatamodeld 文件中设置默认值,但没有成功。看来 RestKit 在映射时将值设置为 Nil。

澄清一点..我不认为我想通过将属性映射到 api 上的值来设置此属性,因为数据的刷新会覆盖本地数据库上的当前数据。

当前的映射代码。

RKEntityMapping* alertMapping = [RKEntityMapping mappingForEntityForName:@"AlertMessage" inManagedObjectStore:_managedObjectStore];
    [alertMapping addAttributeMappingsFromDictionary:@
     @"alertSubject": @"subject",
     @"alertDetailMessage": @"detailMessage",
     @"id": @"alertId",
     ];   

感谢您的任何建议。 G

【问题讨论】:

【参考方案1】:

看看使用KVC validation(RestKit utilises heavily)来验证来自 RestKit 的传入数据,如果不合适则拒绝更新。这应该与xcdatamodel 中设置的默认值结合使用。

【讨论】:

以上是关于RestKit .20 with CoreData - 如何设置默认值的主要内容,如果未能解决你的问题,请参考以下文章

RestKit CoreData 0.20.3 - 映射完成后保存 MOC 之前的额外检查

RestKit .20.x 价值转换

RestKit 0.20 with Core Data:删除对象

RestKit:无法使用 coredata 执行映射

Restkit 删除 coredata 中特定对象的所有对象

RestKit 一对多逆向关系(无CoreData)