相关疑难解决方法(0)

NSSortDescriptor用数字作为字符串排序?

有一个充满字典的数组喜欢这个:

(
   { order = "10";
     name = "David"
   };
   { order = "30";
     name = "Jake";
   };
   { order = "200";
     name = "Michael";
   };
)
Run Code Online (Sandbox Code Playgroud)

当我像下面的代码一样使用NSSortDescriptor时,它只对第一个char进行排序,因此200低于30.我当然可以将"order"对象更改为NSNumber而不是字符串,它可以工作.但有没有办法将字符串排序为int值而不更改源对象?

NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"norder"  ascending:YES];
[departmentList sortUsingDescriptors:[NSArray arrayWithObjects:descriptor,nil]];
Run Code Online (Sandbox Code Playgroud)

更新:

感谢bandejapaisa.

这是iOS 5的工作版本(Xcode,其中包括编译).

NSArray *sortedArray;
sortedArray = [departmentList sortedArrayUsingComparator:(NSComparator)^(id a, id b) {
    NSNumber *num1 = [NSNumber numberWithInt:[[a objectForKey:@"norder"] intValue]];
    NSNumber *num2 = [NSNumber numberWithInt:[[b objectForKey:@"norder"] intValue]];

    return [num1 compare:num2];
}];
departmentList = [sortedArray mutableCopy];
Run Code Online (Sandbox Code Playgroud)

objective-c ios ios5

11
推荐指数
2
解决办法
5581
查看次数

标签 统计

ios ×1

ios5 ×1

objective-c ×1