0

次の JSON を提供する Ruby On Rails ローカル サーバーを実行しています。

[ { "content" : "Here is content",
    "created_at" : "2012-10-07T01:06:51Z",
    "id" : 4,
    "name" : "Joe",
    "title" : "Title 1",
    "updated_at" : "2012-10-07T01:06:51Z"
  },
  { "content" : "Here is content",
    "created_at" : "2012-10-07T01:07:09Z",
    "id" : 5,
    "name" : "John",
    "title" : "Title2",
    "updated_at" : "2012-10-07T01:07:09Z"
  }
]

私は RestKit を使用して、これを次Postのようにモデル オブジェクトに解析しています。

- (void)loadObjects
{
    RKObjectMapping *objectMapping = [RKObjectMapping mappingForClass:[Post class]];
    [objectMapping mapKeyPath:@"id" toAttribute:@"postId"];
    [objectMapping mapKeyPath:@"created_at" toAttribute:@"createdAt"];
    [objectMapping mapKeyPath:@"content" toAttribute:@"content"];
    [objectMapping mapKeyPath:@"title" toAttribute:@"title"];
    [objectMapping mapKeyPath:@"name" toAttribute:@"name"];
    [objectMapping mapKeyPath:@"updated_at" toAttribute:@"updatedAt"];

    RKObjectManager* manager = [RKObjectManager objectManagerWithBaseURLString:@"http://localhost:3000/"];
    [manager loadObjectsAtResourcePath:@"/posts" objectMapping:objectMapping delegate:self];
}

- (void)objectLoader:(RKObjectLoader *)objectLoader didLoadObjects:(NSArray *)objects {
    NSLog(@"%@", objects);
}

これは問題なく動作しますが、loadObjectsAtResourcePath:objectMapping:delegate:非推奨です。したがって、を使用する必要があると思いますがloadObjectsAtResourcePath:delegate:、を設定する方法がわかりませんobjectMapping。何かご意見は?

アップデート

私は今デリゲートを次のように設定しています:

[manager loadObjectsAtResourcePath:@"/posts" usingBlock:^(RKObjectLoader *loader) {
    loader.objectMapping = objectMapping;
    loader.delegate = self;
}];
4

1 に答える 1

1

レストキットのドキュメントには、使用する場合loadObjectsAtResourcePath:usingBlock:、ブロック内から objectMapping を設定できることが記載されています。

- (void)loadObjectUsingBlockExample {
    [[RKObjectManager sharedManager] loadObjectsAtResourcePath:@"/monkeys.json" usingBlock:^(RKObjectLoader *loader) {
        loader.objectMapping = [[RKObjectManager sharedManager].mappingProvider objectMappingForClass:[Monkey class]];
    }];
}
于 2012-10-07T04:03:49.593 に答える