说我有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
当书籍属性的数组CoreData
书的对象。 我使用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
?