2012-06-05 76 views
0

我有一個UITableViewController,它使用一個數組,其中包含行中每個條目的值。 我想通過迭代從JSON文件讀取的值來設置該數組的值。使用for循環來設置數組中的值

這是我創建的將數據讀入數組並將其返回給視圖控制器的新方法。我不知道在哪裏返回數組,或者如何真正設置它。

+(NSArray *)setDataToJson{ 
NSDictionary *infomation = [NSDictionary dictionaryWithContentsOfJSONString:@"Test.json"]; 
NSArray *test = [infomation valueForKey:@"Animals"]; 
for (int i = 0; i < test.count; i++) { 
    NSDictionary *info = [test objectAtIndex:i]; 
    NSArray *array = [[NSArray alloc]initWithObjects:[Animal animalObj:[info valueForKey:@"AnimalName"] 
location:[info valueForKey:@"ScientificName"] description:[info valueForKey:@"FirstDesc"] image:[UIImage imageNamed:@"cat.png"]], nil]; 
     return array; 

我知道我的animalObj功能工作時,數據是本地字符串(@「貓」)和我dictionaryWithContentsOfJSONString的作品,因爲我已經測試過,但我沒有使用此功能將數據設置爲一個數組,只有UILabels,所以這就是我困惑的地方,關於如何將這些數據設置爲數組。但仍然使用For循環。

回答

1

你想用的 NSMutableArray一個實例, 這將讓您逐步到陣列的for循環中添加元素爲你 迭代:

... 
NSMutableArray *array = [NSMutableArray array]; 
for (int i = 0; i < test.count; i++) { 
    NSDictionary *info = [test objectAtIndex:i]; 
    Animal *animal = [Animal animalObj:[info valueForKey:@"AnimalName"] 
           location:[info valueForKey:@"ScientificName"] 
          description:[info valueForKey:@"FirstDesc"] 
           image:[UIImage imageNamed:@"cat.png"]]; 
    [array addObject:animal]; 
} 
return array; 

因爲NSMutableArrayNSArray一個子類,沒有必要改變你的方法的返回類型。

+0

非常感謝! – domshyra

+0

當我做'(lldb)po測試 (NSArray *)$ 26 = 0x06fb5000 [沒有可用的Objective-C說明]'但是當我在其他課上做這個測試的時候,它說'po test (NSArray *)$ 27 = 0x06a4e930 '爲什麼它不能在我的NSObject的Animal類上工作?有什麼建議麼? – domshyra

+0

爲你的類實現[''description'](https://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Protocols/NSObject_Protocol/Reference/NSObject.html)「方法。 – ckhan

相關問題