次のように、Web サービスからネイキッド JSON 配列でいくつかの URL を取得しています。
[
"https://server1.com",
"https://server2.com"
]
これらを個別のコア データ エンティティにマップしたいのですが、アサーション エラーが発生しています。
I restkit.network:RKObjectRequestOperation.m:180 GET 'https://server-test.com/Client/Endpoints'
*** Assertion failure in NSDictionary *RKEntityIdentificationAttributesForEntityMappingWithRepresentation(RKEntityMapping *__strong, NSDictionary *__strong)(), /Users/jonukas/MyApp/Pods/RestKit/Code/CoreData/RKManagedObjectMappingOperationDataSource.m:83
An uncaught exception was raised
Expected a dictionary representation
FWIW、ブレークポイントをオンに設定するRKManagedObjectMappingOperationDataSource.m:83
と、あるべき表現NSDictionary
が実際にはであることが示されますRKMappingSourceObject
。
私が作成したマッピングは次のとおりです。
RKEntityMapping *mapping = [RKEntityMapping mappingForEntityForName:@"MyURL"
inManagedObjectStore:self.manager.managedObjectStore];
[mapping addPropertyMapping:[RKAttributeMapping attributeMappingFromKeyPath:nil
toKeyPath:@"url"]];
RKResponseDescriptor *descriptor = [RKResponseDescriptor responseDescriptorWithMapping:mapping
method:RKRequestMethodGET
pathPattern:@"Client/Endpoints"
keyPath:nil
statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];
[self.manager addResponseDescriptor:descriptor];
私のエンティティには、変換可能なタイプの属性 (url) が 1 つだけあります。NSManagedObject
サブクラスは次のとおりです。
@interface MyURL : NSManagedObject
@property (nonatomic, retain) id url;
@end
マッピングが間違っているのでしょうか、それともエンティティの説明/オブジェクト モデルに問題がありますか (コア データを使い始めたばかりです)。
更新:識別属性を設定しようとしましたが、役に立たなかったようです:
[mapping setIdentificationAttributes:@[@"url"]];
トレース ログを有効にすると、次のRestKit/ObjectMapping
結果が得られます。
D restkit.object_mapping:RKMapperOperation.m:377 Executing mapping operation for representation: (
"https://server1.com",
"https://server2.com"
)
and targetObject: (null)
T restkit.object_mapping:RKMapperOperation.m:320 Examining keyPath '<null>' for mappable content...
D restkit.object_mapping:RKMapperOperation.m:297 Found mappable collection at keyPath '<null>': (
"https://server1.com",
"https://server2.com"
)
*** Assertion failure in NSDictionary *RKEntityIdentificationAttributesForEntityMappingWithRepresentation(RKEntityMapping *__strong, NSDictionary *__strong)(), /Users/jonukas/MyApp/Pods/RestKit/Code/CoreData/RKManagedObjectMappingOperationDataSource.m:83
…
(null) targetObject が私の問題かもしれないと推測しています。
更新 2: RestKit 0.21.0 で問題が修正されました。