0

オブジェクトの配列をコア データ エントリにマッピングする際に奇妙な問題が発生しています。

ユーザー エンティティ マッピングと 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に設定すると、すべてが魅力的に機能します..... =.=睡眠不足は悪いです....

4

1 に答える 1