我有NSMutableArray* names
,其中包含NSStrings。我想用caseInsensitiveCompare
方法对数组进行排序。
这是我写的代码:
names= [names sortedArrayUsingComparator: ^ NSComparisonResult (id obj1, id obj2)
{
return [obj1 caseInsensitiveCompare: obj2];
}];
问题是sortedArrayUsingComparator
返回NSArray而不是NSMutableArray,我在运行时使用此代码收到警告和问题。
有没有办法将NSArray强制转换为NSMutableArray?或者我是否必须复制所有元素?最后一个解决方案很昂贵:有人会建议一个不错的低开销解决方案吗?
答案 0 :(得分:1)
请注意,您正在使用的函数的名称(sortedArrayUsingComparator
)告诉您它将返回一个数组而不是一个可变数组。使用NSArray的mutableCopy方法获取可变副本。
names= [[names sortedArrayUsingComparator: ^ NSComparisonResult (id obj1, id obj2)
{
return [obj1 caseInsensitiveCompare: obj2];
} ] mutableCopy];
或者,更容易阅读/关注:
NSArray *namesArray = [names sortedArrayUsingComparator:^NSComparisonResult (id obj1, id obj2) {
return [obj1 caseInsensitiveCompare: obj2];
}];
names = [namesArray mutableCopy];