[英]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.