【发布时间】:2017-03-29 14:33:04
【问题描述】:
我有一个包含数字的字符串数组,即Shift 1 RT9909 我对数组进行如下排序:
NSSet *forms = dataObject.rtForms;
NSSortDescriptor *nameDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"type" ascending:YES];
NSArray *sorted = [forms sortedArrayUsingDescriptors:[NSArray arrayWithObject:nameDescriptor]];
当元素数量低于 10 时,这可以正常工作。此后,Shift 10 RT9909 被放在前面 Shift 2 RT9909。
所以我的问题是如何对数组进行排序,以便 Shift 10 RT9909 跟随 Shift 9 RT9909
【问题讨论】:
-
您必须将字符串解析为值并按这些值排序。没有其他办法了。或者在您的字符串中添加前导零。
-
NSArray *sorted = [forms sortedArrayUsingComparator:^NSComparisonResult(rtFormClass _Nonnull form1, rtFormClass * _Nonnull form2) { return [form1.type compare:form2.type options:NSNumericSearch];?使用NSNumericSearch进行比较。
标签: ios objective-c arrays sorting