2012-07-03 43 views
1

我的應用程序中有一些實現RestKit/CoreData的問題。使用RKTwitterCoreData示例應用程序,它指向我的Web服務的JSON飼料,我獲得生成的實現代碼如下:使用CoreData時RestKit沒有正確映射屬性

  1. 刷新生成一個新的核心數據:

    Duplicate objects/ID not being displayed correctly

    到目前爲止遇到的問題即使我將primaryKeyAttribute設置爲orderID。

  2. 細胞爲textLabel顯示一個奇怪的orderID不與我的web服務

這符合我applicationDidFinishLaunchingWithOptions:

- (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結果/命令:

enter image description here

有關處理此問題的任何建議?謝謝!

回答

0

Doh!原因是因爲twitter API不符合關鍵值編碼標準。一旦我改變:

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

有:

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

一切又恢復了!

謝謝,並希望它可以幫助別人。