swa*_*ner 9 core-data ios7 github-mantle
在地幔中是否有办法更新核心数据中的现有记录而不是总是创建新记录?这篇博客文章看起来很有希望,但我没有updateWithJSON:在Mantle的某个地方找到这个方法.现在,我正在做以下事情:
MantleObject *mantleObject = [MTLJSONAdapter modelOfClass:[MantleObject class] fromJSONDictionary:dictionary error:NULL];
CoreDataObject *coreDataObject = [CoreDataObject MR_findFirstByAttribute:@"primaryKey" withValue:mantleObject.primaryKey];
// avoid duplicates
if (coreDataObject != nil) {
[coreDataObject MR_deleteEntity];
}
[MTLManagedObjectAdapter managedObjectFromModel:mantleObject insertingIntoContext:[NSManagedObjectContext MR_contextForCurrentThread] error:NULL];
Run Code Online (Sandbox Code Playgroud)
它按预期工作,但我不喜欢总是一遍又一遍地删除和创建"相同"对象的想法.所以我希望有机会更新现有的对象(覆盖很好;新对象的所有值都可以替换现有对象).
Dav*_*unt 10
Mantle支持从1.3版开始更新托管对象.
您的模型类需要实现MTLManagedObjectSerializing协议方法propertyKeysForManagedObjectUniquing并返回标识模型的属性键,在您的情况下,它们显示为primaryKey:
+ (NSSet *)propertyKeysForManagedObjectUniquing {
return [NSSet setWithObject:@"primaryKey"];
}
Run Code Online (Sandbox Code Playgroud)
该标题文档解释了它是如何工作的,但基本上MTLManagedObjectAdapter如果存在并更新对象,而不是创建一个新的将获取现有的管理对象.
我建议使用Mantle的内置支持,而不是试图自己找到重复项.这将导致更简单,更易于维护的代码.
| 归档时间: |
|
| 查看次数: |
2066 次 |
| 最近记录: |