- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个 NSString,我想用数字搜索它。 NSNumericSearch 似乎是合适的解决方案,但显然只有 compare:、caseInsensitiveCompare:、localizedCompare: 和 localizedCaseInsensitiveCompare: 在 iOS 中执行提取时用作排序选择器。 (这是一个核心数据项目)。据我了解,这与 SQLite 支持数据存储有关。
我已尝试将字符串转换为 NSNumber。 ARC 有一个错误,因为 NSNumber 基本上是一个 int。
总而言之,我想对字符串进行数字排序 (1, 2, 11, 25) 而不是 (1, 11, 2, 25)。我将不胜感激任何解决方案。
.
.
编辑:(对于上述内容,我深表歉意。当时我不在电脑旁,而且很匆忙。)
有关有限排序描述符的信息来自 Isted 和 Harrington 2011 年出版的“Core Data for iOS”一书的最后一页。
When doing a fetch with sort descriptors you'll need to restrict yourself to the following selectors on iOS: compare:, caseInsensitiveCompare:, localizedCompare:, localizedCaseInsensitiveCompare:.
为了澄清,我写了一个这样的类别:
@interface NSString (SizeComparison)
-(NSComparisonResult)sizeCompare:(NSString*)otherString;
@end
@implementation NSString (SizeComparison)
-(NSComparisonResult)sizeCompare:(NSString*)otherString {
return [self compare:otherString options:NSNumericSearch];
}
@end
fetchedResultsCntroller中的排序描述符如下:
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"size" ascending:YES selector:@selector(sizeCompare:)];
它返回这个错误:
* 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“不支持的 NSSortDescriptor 选择器:sizeCompare:”
这似乎与 Isted & Harrington 的说法一致。
此外,当我说我转换为 NSNumber 时,我试图简短,但显然不清楚。这就是我所做的:
NSNumberFormatter *numformatter = [[NSNumberFormatter alloc] init];
numformatter.numberStyle = NSNumberFormatterNoStyle;
self.objectToEdit.size = [numformatter numberFromString:self.sizeTextField.text];
因此,我想对 NSString 进行数字排序 (1, 2, 11, 25) 而不是 (1, 11, 2, 25)。我仍然会很感激任何解决方案。
最佳答案
我终于找到了字符串数字排序问题的答案。它涉及直接使用 block 。对于我的排序描述符,它很简单:
NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"size" ascending:NO comparator:^(id obj1, id obj2) { return [obj1 compare:obj2 options:NSNumericSearch]; }];
这允许 NSStrings 按数字排序 (1, 11, 2, 25)。
我不确定为什么某个类别不起作用。以为我会为遇到相同问题的其他人发布答案。
关于objective-c - 适用于 iOS 的 NSNumericSearch 解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8680129/
我有一个 NSString,我想用数字搜索它。 NSNumericSearch 似乎是合适的解决方案,但显然只有 compare:、caseInsensitiveCompare:、localizedC
我有返回 NSComparisonResult 的代码。当我的代码是仅包含字母字符的 NSString 时,我的代码非常适合按升序和降序对我的数组进行排序。 当 NSStrings 中有数字时,例如
我是一名优秀的程序员,十分优秀!