【发布时间】:2014-01-09 13:09:46
【问题描述】:
假设我有这样的JSON:
{
"hits": 4056,
"books": [
{
"name": "Book 1"
},
{
"name": "Book 2"
},
{
"name": "Book 3"
}
]
}
我想将此响应映射到BooksResponse 对象:
@interface BooksResponse
@property (nonatomic, assign) NSInteger hits;
@property (nonatomic, strong) NSArray* books;
@end
其中 books 属性是 CoreData Book 对象的数组。我正在使用RKObjectEntity 来映射BooksResponse,如下所示:
RKObjectMapping* booksResponseMapping = [RKObjectMapping mappingForClass:[BooksResponse class]];
[booksResponseMapping addAttributeMappingsFromDictionary:@{
@"hits" : @"hits"
}];
[booksResponseMapping addPropertyMapping:[RKRelationshipMapping
relationshipMappingFromKeyPath:@"books"
toKeyPath:@"books"
withMapping:[self booksMapping]]];
booksMapping 是这样实现的:
RKEntityMapping* bookMapping = [RKEntityMapping mappingForEntityForName:@"Book"
inManagedObjectStore:[self managedObjectStore]];
[bookMapping addAttributeMappingsFromDictionary:@{
@"name" : @"name"
}];
但每当RestKit 尝试执行映射时,就会发生崩溃:
CoreData: error: Failed to call designated initializer on NSManagedObject class 'Book'
我检查了,在执行期间 ManagedObjectStore 存在于 RKObjectManager 实例上。应用挂起类RKMappingOperation:355上线
id currentValue = [self.destinationObject valueForKeyPath:keyPath];
有没有一种方法可以在普通的objectiveC 对象和NSManagedObject 之间建立关系,以便JSON 响应的一部分保留在CoreData 中?
【问题讨论】:
-
您提出什么要求?我猜托管对象存储没有对映射可用。
-
简单的http GET请求。所有其他在简单 ObjC 类和 CoreData 类之间没有关系的实体映射都可以工作。
标签: ios json core-data restkit-0.20