RestKit неправильно отображает атрибуты при использовании CoreData

У меня возникли проблемы с реализацией RestKit/CoreData в моем приложении. Используя пример приложения RKTwitterCoreData и указав его на мой веб-сервис для фида json, я получаю результирующее табличное представление:

Повторяющиеся объекты/ID отображаются неправильно

Проблемы, с которыми столкнулись до сих пор:

  1. Refresh создает новую запись основных данных, даже если для параметра primaryKeyAttribute установлено значение orderID.
  2. ячейка textLabel отображает нечетный идентификатор заказа, который не соответствует моему веб-сервису

Вот мое приложениеDidFinishLaunchingWithOptions:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Initialize RestKit
RKObjectManager* objectManager = [RKObjectManager managerWithBaseURLString:@"http://mywebservice.com"];

// Enable automatic network activity indicator management
objectManager.client.requestQueue.showsNetworkActivityIndicatorWhenBusy = YES;

NSString *databaseName = @"RKTwitterData.sqlite";
objectManager.objectStore = [RKManagedObjectStore objectStoreWithStoreFilename:databaseName usingSeedDatabaseName:nil managedObjectModel:nil delegate:self];

RKManagedObjectMapping* statusMapping = [RKManagedObjectMapping mappingForClass:[Order class] inManagedObjectStore:objectManager.objectStore];
statusMapping.primaryKeyAttribute = @"orderID";
[statusMapping mapKeyPath:@"id" toAttribute:@"orderID"];
[statusMapping mapAttributes:@"created_at", nil];

// Register our mappings with the provider
[objectManager.mappingProvider setObjectMapping:orderMapping forResourcePathPattern:@"/orders"];

// Create Window and View Controllers
RKTwitterViewController* viewController = [[[RKTwitterViewController alloc] initWithNibName:nil bundle:nil] autorelease];
UINavigationController* controller = [[UINavigationController alloc] initWithRootViewController:viewController];
UIWindow* window = [[UIWindow alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
[window addSubview:controller.view];
[window makeKeyAndVisible];

return YES;
}

И результат json в /orders:

введите здесь описание изображения

Любые советы по решению этой проблемы? Спасибо!


person chourobin    schedule 03.07.2012    source источник


Ответы (1)


Дох! Причина заключалась в том, что API Twitter не совместим с кодированием ключ-значение. Как только я изменил:

 [objectManager.mappingProvider setObjectMapping:orderMapping forResourcePathPattern:@"/orders"];

с:

 [objectManager.mappingProvider setObjectMapping:orderMapping forKeyPath:@"orders"];

Это снова сработало!

Спасибо и надеюсь, что это поможет кому-то.

person chourobin    schedule 03.07.2012