当对象管理器管理时,如何在 RestKit 中手动设置托管对象属性的值?
我为核心数据持久性创建了一个带有持久存储的 RKObjectManager。
我向对象管理器添加了一个 RKEntityMapping 和一个 RKResponseDescriptor。
现在我可以像这样调用对象管理器:
[[RKObjectManager sharedManager]
getObjectsAtPath:@"/path_to_ressource"
parameters:nil
success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
// success
} failure:^(RKObjectRequestOperation *operation, NSError *error) {
// report error
}];
并且数据很好地显示在 UITableView 中(我为此使用了 NSFetchedResultsController)。一切看起来都很好,我的数据被保留了。
现在我想向实体添加一个属性,该属性取决于响应描述符的键路径。我应该怎么做?在哪里做?
我的第一次尝试:
我将属性添加到核心数据实体,然后在上面代码的成功块中尝试了这个:
for (Entity *s in mappingResult.dictionary[@"CurrentEntities"]) {
s.isCurrent = [NSNumber numberWithBool:YES];
}
for (Entity *s in mappingResult.dictionary[@"OldEntities"]) {
s.isCurrent = [NSNumber numberWithBool:NO];
}
假设 json 看起来像这样:
{
CurrentEntities: [{ id: 10, title: "bhubhbhu"}, { id: 11, title: "ezeze"}, ...],
OldEntities: [{ id: 0, title: "rf-reref"}, { id: 1, title: "vcvcvcvcv"}, ...]
}
将新的本地属性设置为 YES 或 NO 后,我确实可以在我的表视图中看到结果,但看起来这些更改没有保留。
那么有什么想法吗?
编辑:
好吧,似乎保存上下文会使更改正确持久:
NSError *error = nil;
[[RKManagedObjectStore defaultStore].mainQueueManagedObjectContext saveToPersistentStore:&error];
编辑:
实际上,看起来我必须在每个对象更改后保存上下文,否则我会收到 Core Data 错误。