2012-04-09 79 views
2

我是新來的Objective-C和iPhone如何將返回的NSArray添加到一個的NSArray

我用值,並根據我必須安排,價值觀的按鍵排序的NSDictionary,我已經整理陣列。

//getting values 
NSArray* keys1 = [sortDictionary allValues];  
NSArray* sortedArray = [keys1 sortedArrayUsingComparator:^(id a, id b) { 
    return [a compare:b options:NSNumericSearch]; 
}]; 

我現在的問題是,我通過allKeysForObject獲取值的鍵:,它返回一個NSArray。

for(NSString* aStr in sortedArray) { 
    NSLog(@"%@ has value %@", [sortDictionary allKeysForObject:aStr], aStr); 
}  
O/P :- (
    Sourish 
) has value 60 

,而我想要的「酸溜溜」的字符串,並將其存儲到NSArray的,比商店的NSArray到NSDictionary中或同時存儲微酸和60到另一個NSDictionary中

請讓我來分類我們的這個問題。

+0

我沒有找到這個問題容易。如果我正確地理解它,可能有助於將allKeysForObject:aStr更改爲valueForKey:aStr。這將返回一個NSString,如果這就是你使用的密鑰。目前還不清楚你是否期望在字典中有多個相同對象的副本,並且如果你願意的話,你想對此做些什麼。 – Obliquely 2012-04-09 08:19:44

+0

@Matthew Elton:是的,我嘗試過,當我試圖與我得到一個空值。 – iYahoo 2012-04-09 09:17:36

+0

糟糕。所以它確實如此。我想你可能想要一些'anyKeyForObject:'並返回一個鍵。見下面的答案。 – Obliquely 2012-04-09 09:42:21

回答

2

這通過查看陣列得到的字符串爲您服務。那是你的追求?

NSDictionary* sortDictionary = [NSDictionary dictionaryWithObjectsAndKeys: @"60", @"Sourish", @"45" , @"Peckish", @"25", @"Swordfish", @"15", @"Mashmish", nil]; 

NSArray* keys1 = [sortDictionary allValues];  
NSArray* sortedArray = [keys1 sortedArrayUsingComparator:^(id a, id b) 
{ 
    return [a compare:b options:NSNumericSearch]; 
}]; 

for(NSString* aStr in sortedArray) 
{ 
    NSString* keyForObject = @""; 

    if ([[sortDictionary allKeysForObject: aStr] count] > 0) 
    { 
     keyForObject = [[sortDictionary allKeysForObject: aStr] objectAtIndex: 0]; 
    } 

    NSLog(@"%@ has value %@", keyForObject, aStr); 
} 

此日誌:

Mashmish has value 15 
Swordfish has value 25 
Peckish has value 45 
Sourish has value 60 
+0

謝謝你這麼多,它真的對我有用。 – iYahoo 2012-04-09 09:49:34

0

可以使用NSMutableArray使用addObject: selector 存儲數據,或使用NSMutableDictionary到兩個存儲爲關鍵:使用addObjectsAndKeys: selector

0

「>>我有使用值,並根據我對排序的NSDictionary值消減有安排的,該鍵的值」

NSArray *allkey =[[NSArray alloc] initWithArray:[sortDictionary keysSortedByValueUsingSelector:@selector(compare:)]] ; 

實現您的比較方法,

- (NSComparisonResult)compare:(id)b { 
    return [self compare:b options:NSNumericSearch]; 
} 

的allkey是使用數值鍵數組排序。