gpt4 book ai didi

ios - NSInvalidArgumentException原因: '-[__NSCFString > sortedArrayUsingComparator:]:

转载 作者:行者123 更新时间:2023-11-29 04:30:49 26 4
gpt4 key购买 nike

我收到一个奇怪的排序错误。我有一个名为 wordArrayDuplicates 的数组中的范围列表。我需要根据范围位置对该数组进行排序,因此我将字符串转换为 NSNumber 但它不会进行比较。

* Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString sortedArrayUsingComparator:]:

  - (NSArray *)sortedArray {
if (!sortedArray) {
sortedArray = [[NSArray alloc]init];
}
return [wordArrayDuplicates sortedArrayUsingComparator:(NSComparator)^(id obj1, id obj2){
NSNumber * lastName1 = [NSNumber numberWithInt:NSRangeFromString(obj1).location];
NSNumber * lastName2 = [NSNumber numberWithInt:NSRangeFromString(obj2).location];
return [lastName1 compare:lastName2]; }];
}
-(void)beginGoingThroughDuplicatesAtWordIndex:{
if (index == 1) {[self loadDuplicates];}
[string addAttribute:(id)kCTForegroundColorAttributeName
value:(id)[UIColor blackColor].CGColor
range:NSMakeRange(0, string.length)];
BOOL shouldContinue = YES;
while (shouldContinue == YES && index<[[self sortedArray] count]) {
if (![[tv.text substringWithRange:NSRangeFromString([[self sortedArray] objectAtIndex:index-1])] isEqualToString:[tv.text substringWithRange:NSRangeFromString([[self sortedArray] objectAtIndex:index])]]) {
shouldContinue = NO;
}
[string addAttribute:(id)kCTForegroundColorAttributeName
value:(id)[UIColor redColor].CGColor
range:NSRangeFromString([sortedArray objectAtIndex:index-1])];
index++;
}
textlayer.string = string;
}

最佳答案

当您使用 sortedArrayUsingSelector: 对数组进行排序时,如

[wordArrayDuplicates sortedArrayUsingSelector:@selector(sortedArrayUsingComparator:)];

您正在传递将在数组中的每个对象上调用的选择器。因此,您必须提供一些在数组中的对象中实现的方法。例如,compare:,这是 NSString 的标准方法:

[wordArrayDuplicates sortedArrayUsingSelector:@selector(compare:)];

您正在传递另一个 NSArray 方法。您必须选择,要么使用选择器排序,要么使用比较器排序,但不能在其中一个内部调用另一个。


- (NSArray *)sortedArray 中的示例中,您正确使用了 sortedArrayUsingComparator:,请坚持这种方式。

使用建议

一般来说,在从代码的一个位置对数组进行排序时应该使用 sortedArrayUsingComparator:,以避免在对象类中创建选择器。

当从代码中的许多地方调用排序时,创建选择器可能更有用。即使它不是您自己的对象并且您只是以某种特殊方式对 NSString 进行排序,您也可以使用一些 customCompare:< 在 NSString 上创建一个类别 方法并使用它。

关于ios - NSInvalidArgumentException原因: '-[__NSCFString > sortedArrayUsingComparator:]:,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11752471/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com