![](/img/trans.png)
[英]SSKeychain - NSArray to NSString/NSMutableString extra characters
[英]convert NSArray of NSString(s) to NSArray of NSMutableString(s)
如何做到這一點而不必通過“ for”循環“滾動”整個給定數組?
我能想到的最好的是:
NSMutableArray *replacementArray = [NSMutableArray array];
[originalArray enumerateObjectsUsingBlock:
^(id obj, NSUInteger index, BOOL *stop)
{
[replacementArray addObject:[[obj mutableCopy] autorelease]];
}
];
哪個或多或少只是告訴了originalArray
為您構造for循環。 如果有的話,它還需要做更多的工作:
NSMutableArray *replacementArray = [NSMutableArray array];
for(id obj in originalArray)
[replacementArray addObject:[[obj mutableCopy] autorelease]];
由於似乎沒有人同意我的評論,即這是將NSNumbers的NSArray轉換為NSStrings數組的更好方法的重復,因此再次提供相同的答案:
NSArray * arrayOfMutableStrings = [arrayOfStrings valueForKey:@"mutableCopy"];
從文檔 :
valueForKey:
返回一個數組,該數組包含調用valueForKey:
在每個數組對象上使用key
的結果。
- (id)valueForKey:(NSString *)key
參量
key
檢索的關鍵。返回值
檢索到的鍵的值。討論區
返回的數組包含每個返回nil
對象的NSNull
元素。
我在NSArray上編寫了一個字典方法,以便能夠編寫更簡潔的功能代碼
-(NSArray *)arrayByPerformingBlock:(id (^)(id))performBlock
{
NSMutableArray *array = [NSMutableArray array];
for (id element in self)
[array addObject:performBlock(element)];
return [NSArray arrayWithArray:array];
}
用法:
arrayWithStrings = [arrayWithStrings arrayByPerformingBlock:^id(id element) {return [[element mutableCopy] autorelease];}];
這是由我從Python了解的列表理解啟發而來的。 我還通過測試編寫了該方法的版本。 參見我的arraytools 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.