1

RestKitを使用して、RegionとCategoryの2つのテーブルビューで使用するために、RegionとCategoryの2つのクラスのプロパティにデータをマップしています。ただし、アプリケーションをテストするときに最初にアクセスするビューのデータを正しくマッピングしているだけのように見えます。たとえば、最初にカテゴリを表示してからリージョンを切り替えると、リージョンはカテゴリタイプのオブジェクトとして保存されます。最初にRegionsを表示し、次にCategoriesを表示すると、カテゴリはRegionタイプのオブジェクトとしてマップされます。オブジェクトの数が多いため、正しい情報が取得されていることがわかりますが、正しいタイプとして保存されていません。各マッピング要求が正しく行われていることを確認するにはどうすればよいですか?各マッピングのコードは次のとおりです。

カテゴリ:

RKURL *baseURL = [RKURL URLWithBaseURLString:@"MyUrl"];
RKObjectManager *objectManager = [RKObjectManager objectManagerWithBaseURL:baseURL];
objectManager.client.baseURL = baseURL;

RKObjectMapping *categoryMapping = [RKObjectMapping mappingForClass:[Category class]];
[categoryMapping mapKeyPathsToAttributes:@"categoryID", @"categoryID", @"parentID", @"parentID", @"categoryName", @"categoryName", @"childrenCount", @"childrenCount", @"parentCount", @"parentCount", @"catCount", @"catCount", nil];
[objectManager.mappingProvider setMapping:categoryMapping forKeyPath:@""];

地域:

RKURL *baseURL = [RKURL URLWithBaseURLString:@"MyUrl"];
RKObjectManager *objectManager = [RKObjectManager objectManagerWithBaseURL:baseURL];
objectManager.client.baseURL = baseURL;

NSLog(@"URL Created");

RKObjectMapping *regionMapping = [RKObjectMapping mappingForClass:[Region class]];
[regionMapping mapKeyPathsToAttributes:@"regionHome", @"regionHome", @"regionID", @"regionID", @"regionName", @"regionName", @"parentCount", @"parentCount", @"parentID", @"parentID", @"childrenCount", @"childrenCount", @"parentName", @"parentName", nil];
[objectManager.mappingProvider setMapping:regionMapping forKeyPath:@""];
4

1 に答える 1

0

私の判断では、キーパスをのように残したくないでしょ@""[objectManager.mappingProvider setMapping:regionMapping forKeyPath:@""];。おそらくそれらをに置き換える@"region"ので@"category"、RestKitはキーパスに基づいてどのオブジェクトを期待すべきかを判断できます。

また、isKindOfClass:objectLoaderdidLoadObjectsメソッドでオブジェクトを区別するためにメソッドを使用していますか?

おそらくこれはあなたを助けるでしょう:

- (void)objectLoader:(RKObjectLoader*)objectLoader didLoadObjects:(NSArray*)objects {

  if ([[objects objectAtIndex:0] isKindOfClass:[Region class]]) {

      Region *region = [objects objectAtIndex:0];

  }
  else if ([[objects objectAtIndex:0] isKindOfClass:[Category class]]) {

      Category *category = [objects objectAtIndex:0];

  }
}
于 2012-09-19T04:22:28.950 に答える