オブジェクトの配列をコア データ エントリにマッピングする際に奇妙な問題が発生しています。
ユーザー エンティティ マッピングと objectManager コード:
RKEntityMapping *objectMapping = [RKEntityMapping mappingForEntityForName:@"User" inManagedObjectStore:[RKObjectManager sharedManager].managedObjectStore];
[objectMapping addAttributeMappingsFromDictionary:@{@"id": @"user_id",
@"first_name": @"first_name",
@"middle_name":@"middle_name",
@"last_name":@"last_name",
@"phone":@"phone",
@"job_title":@"job_title",
@"roles":@"roles",
@"email":@"email",
@"created_at":@"created_at",
@"updated_at":@"updated_at",
@"avatar_urls":@"avatar_urls",
@"skills":@"skills",
@"interests":@"interests",
@"birth_date":@"birth_date"}];
RKEntityMapping *userMapping = [User entityMapping];
[manager addResponseDescriptor:[RKResponseDescriptor responseDescriptorWithMapping:userMapping
method:RKRequestMethodGET
pathPattern:@"users/:id"
keyPath:nil
statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)]];
[manager addResponseDescriptor:[RKResponseDescriptor responseDescriptorWithMapping:userMapping
method:RKRequestMethodGET
pathPattern:@"users"
keyPath:nil
statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)]];
User Entity の配列の簡単な例を次に示します。
{
User1,
User2,
User3
}
RestKit のデバッグ ログを見ると、すべてが正しい値にマップされています。しかし、最終結果を見ると、マップされた配列には正しい数の項目がありますが、それらはすべて User3 です。同様に、データベースにも User3 があります。User1 と User2 がデータベースに保存されることはありません。
私はどこで間違ったのかを理解しようとしています。どんな助けでも大歓迎です。
更新:
[manager getObjectsAtPath:@"users"
parameters:@{@"token":token}
success:success failure:failure];
[
{
"avatar_urls": {
"large": "",
"medium": "",
"small": "",
"thumb": "",
"icon": ""
},
"id": 631,
"roles": [
"company_admin"
],
"created_at": "2013-10-23T15:59:06.256-05:00",
"updated_at": "2013-10-27T16:51:31.947-05:00",
"skills": [],
"interests": [],
"birth_date": null,
"phone_message_channel": true,
"email_message_channel": true,
"first_name": "User",
"last_name": "One",
"email": "",
"phone": null,
"job_title": null
},
{
"avatar_urls": {
"large": "",
"medium": "",
"small": "",
"thumb": "",
"icon": ""
},
"id": 633,
"roles": [
"company_admin"
],
"created_at": "2013-10-23T16:07:46.472-05:00",
"updated_at": "2013-10-27T16:51:26.148-05:00",
"skills": [],
"interests": [],
"birth_date": null,
"phone_message_channel": true,
"email_message_channel": true,
"first_name": "User",
"last_name": "two",
"email": "",
"phone": "",
"job_title": ""
},
{
"avatar_urls": {
"large": "",
"medium": "",
"small": "",
"thumb": "",
"icon": ""
},
"id": 632,
"roles": [
"company_admin"
],
"created_at": "2013-10-23T16:07:12.295-05:00",
"updated_at": "2013-11-01T20:11:26.607-05:00",
"skills": [],
"interests": [],
"birth_date": "",
"phone_message_channel": true,
"email_message_channel": true,
"first_name": "User",
"last_name": "Three",
"email": "",
"phone": "",
"job_title": ""
}
]
成功ブロック マッピングの結果で繰り返しますが、配列に 3 つのアイテムが表示され、すべてがユーザー 3 です。また、コア データを確認し、ユーザー モデルの 1 行のみが追加/更新されていることを確認しました。
FIX 自分で回答を投稿するポイントがありません..更新として追加します
User モデルに identityAttributes を追加するのを忘れていました。それを自分のIDに設定すると、すべてが魅力的に機能します..... =.=睡眠不足は悪いです....