为什么在对键进行排序时出现错误 "Incompatible pointer types assigning to 'NSMutableArray *' from 'NSArray *'."?
Why am I getting the error "Incompatible pointer types assigning to 'NSMutableArray *' from 'NSArray *'." while sorting keys?
使用下面的代码我得到了错误,"Incompatible pointer types assigning to 'NSMutableArray *' from 'NSArray *'."我没有使用 NSArray,为什么我得到这个错误,我该如何修复它?
(NSMutableArray) = [NSMutableDictionary keysSortedByValueUsingComparator: ^(id obj1, id obj2) {
if ([obj1 integerValue] > [obj2 integerValue]) {
return (NSComparisonResult)NSOrderedDescending;
}
if ([obj1 integerValue] < [obj2 integerValue]) {
return (NSComparisonResult)NSOrderedAscending;
}
return (NSComparisonResult)NSOrderedSame;
}];
这是因为方法 keysSortedByValueUsingComparator:
returns 指向包含键的已排序 NSArray
的指针。您正在使用 NSArray
指针并尝试将其分配给 NSMutableArray
。指针 这是一个错误,因为 NSArray
是 NSMutableArray
的超类并且不会响应所有相同的 selectors/methods。
您需要将 keysSortedByValueUsingComparator:
的输出分配给 NSArray
指针而不是 NSMutableArray
指针。
使用下面的代码我得到了错误,"Incompatible pointer types assigning to 'NSMutableArray *' from 'NSArray *'."我没有使用 NSArray,为什么我得到这个错误,我该如何修复它?
(NSMutableArray) = [NSMutableDictionary keysSortedByValueUsingComparator: ^(id obj1, id obj2) {
if ([obj1 integerValue] > [obj2 integerValue]) {
return (NSComparisonResult)NSOrderedDescending;
}
if ([obj1 integerValue] < [obj2 integerValue]) {
return (NSComparisonResult)NSOrderedAscending;
}
return (NSComparisonResult)NSOrderedSame;
}];
这是因为方法 keysSortedByValueUsingComparator:
returns 指向包含键的已排序 NSArray
的指针。您正在使用 NSArray
指针并尝试将其分配给 NSMutableArray
。指针 这是一个错误,因为 NSArray
是 NSMutableArray
的超类并且不会响应所有相同的 selectors/methods。
您需要将 keysSortedByValueUsingComparator:
的输出分配给 NSArray
指针而不是 NSMutableArray
指针。