2011-06-21 360 views
0

我有一個變量,它是打印其值在控制檯上是這樣的:從數組中檢索不同的值

源ID密鑰,是(

{ 

    name = "ABC Rawal"; 

    uid = 10000048171452; 

} )

這是我正在使用的代碼:

-(void)request:(FBRequest*)request didLoad:(id)result { 

    NSLog(@"source id key is %@", result); 

} 

我必須分別獲得nameuid。我如何從result檢索這些值?

+2

我們無法確定,因爲您沒有顯示'result'類的定義。它可能是一個字典,在這種情況下它會是:'NSString * name = [result objectForKey:@「name」]; '和'int uid = [[result resultForForKey:@「uid」] intValue];'但我只是在猜測。 – nacho4d

+0

函數內部有一個語句,如NSArray * users = result;所以我認爲結果是NSArray變量。 –

+0

@nacho輸出是一個字符串(不太可能)或一個數組。注意圓括號 - 它們是數組的NeXTSTEP表示形式,以及由' - [NSArray description]'使用的形式。 – 2011-06-21 06:21:43

回答

3

result是由字典組成的數組。在你的例子中,數組只有一個元素。

如果你只想要第一個元素的數組,然後:

if ([result count] > 0) { 
    NSDictionary *person = [result objectAtIndex:0]; 
    NSString *personName = [person objectForKey:@"name"]; 
    NSString *personUID = [person objectForKey:@"uid"]; 
    … 
} 

或者,如果你想遍歷數組中的所有元素 - 的情況下,陣中擁有一個以上的元素 - 那麼:

for (NSDictionary *person in result) { 
    NSString *personName = [person objectForKey:@"name"]; 
    NSString *personUID = [person objectForKey:@"uid"]; 
    …  
} 

注意,從你的輸出是不可能知道uid是字符串或數字。上面的代碼認爲它是一個字符串;如果它是一個數字,請使用:

NSInteger personUID = [[person objectForKey:@"uid"] integerValue]; 

或可以包含可能值範圍的適當整數類型。

+0

+1:糾正我:) – Jhaliya