2013-07-18 39 views
4

我想將RestKit v.20納入我的iOS應用程序。我從RKObjectRequestOperation獲得了正確的映射結果,但是我找不到將它放入NSDictionary的好方法。我返回了十六進制值的對象數組。我可以通過使用objectAtIndex獲取所需的所有特定項目的值:但我需要一個包含所有值的字符串格式的地方,而不是十六進制。我只能通過將關聯的類設置爲等於單個數組對象來從十六進制更改爲字符串。我想要一個通用列表,以便我可以預測它用於搜索。RKMappingResult問題。找不到從結果中獲取NSDictionary的方法

這裏是JSON數據:

{ 
    "carsInShop": [ 
     { 
      "car": { 
       "id": "1", 
       "name": "Mercedes", 
       "year": "2000" 
      } 
     }, 
     { 
      "car": { 
       "id": "2", 
       "name": "BMW", 
       "year": "2004" 
      } 
     }, 
     { 
      "car": { 
       "id": "3", 
       "name": "Audi", 
       "year": "2001" 
      } 
     }, 
     { 
      "car": { 
       "id": "4", 
       "name": "Lexus", 
       "year": "2011" 
      } 
     }, 
     { 
      "car": { 
       "id": "5", 
       "name": "Toyota", 
       "year": "2006" 
      } 
     }, 
    ], 
    "count": 5 
} 

這裏就是我有代碼的問題:

NSURL *URL = [NSURL URLWithString: @"http://localhost:8888/testphpread/index.php"]; 
NSURLRequest *request = [NSURLRequest requestWithURL:URL]; 
RKObjectRequestOperation *objectRequestOperation = [[RKObjectRequestOperation alloc] initWithRequest:request 
               responseDescriptors:@[responseDescriptor]]; 

[objectRequestOperation setCompletionBlockWithSuccess:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) { 

    RKLogInfo(@"CarsInShopArray: %@", mappingResult.array); 

    carsInShopArray = [mappingResult array]; 
    CarsInShop* carsInShop = [carsInShopArray objectAtIndex:0]; 


    NSLog(@"Loaded Car ID #%@ -> Name: %@, Year: %@", carsInShop.car.id, carsInShop.car.name, carsInShop.car.year); 

} failure:^(RKObjectRequestOperation *operation, NSError *error) { 
    RKLogError(@"Operation failed with error: %@", error); 
}]; 

這是我從NSLog的獲得:

CarsInShopArray: (
    "CarsInShop: 0xa26b0f0", 
    "CarsInShop: 0xa46b2f0", 
    "CarsInShop: 0xa46af20", 
    "CarsInShop: 0xa46b7a0", 
    "CarsInShop: 0xa46bd90", 
) 

Loaded Car ID #1 -> Name: Mercedes, Year: 2000 

所以你請參閱我可以獲取單個項目,但是我需要訪問整個字典,以用於搜索。

回答

0

你有一個自定義的類CarsInShop,我猜它從NSObject繼承。您不會覆蓋description方法,以便在記錄實例時獲得默認說明。默認值是類名和它的指針。這就是爲什麼你得到"CarsInShop: 0xa26b0f0"。它沒有提到實例的內容。

當你說:"I need to access the dictionary as a whole",你沒有字典。您有一組自定義對象。您仍然可以使用KVC來搜索數組中的項目(根據日誌語句的外觀基於鍵路徑)。


您可以通過執行獲得汽車的數組:

NSArray *cars = [carsInShopArray valueForKey:@"car"]; 
+0

是否有可能有'CarsInShop * carsInShop'對象保持整個陣列?到目前爲止,我一直在使用'carsInShop = [carsInShopArray objectAtIndex:0]'或'indexPath.row'。但這只是一個項目。我怎樣才能訪問'carsInShop.car'並讓它顯示出陣列中所有的汽車? –

+0

或者是否可以將'carsInShopArray'改成一個填充實例內容而不是指針的數組? –

+0

謝謝你的回答。在查看你的編輯之後,我發現我的謂詞必須從'SELF.car.name'改爲'SELF。%K.%K'。 –