私は数値で検索したいNSStringを持っています。 NSNumericSearchが適切な解決策であるようですが、明らかに:、caseInsensitiveCompare:、localizedCompare:およびlocalizedCaseInsensitiveCompare:iOSでフェッチを実行するときにソートセレクタとして機能します。 (これはコアデータプロジェクトです)。これはSQLiteバッキングデータストアと関係があることを私は理解しています。iOS用NSNumericSearchソリューション
文字列をNSNumberにキャストしようとしました。 NSNumberは基本的にintであるため、ARCにはエラーがあります。
要約すると、(1,11,2,25)とは対照的に数値的に(1,2,11,25)文字列をソートしたいと思います。私はどんな解決策にも感謝します。
。
。
EDIT:(。。私は上記のために謝罪私は一度離れて自分のコンピュータからだった、と急いで)
限られたソート記述子についての情報がIsted &ハリントンの2011年の最後のページから来てiOSのコアデータを予約します。
@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:)];
明確にするため
When doing a fetch with sort descriptors you'll need to restrict yourself to the following selectors on iOS: compare:, caseInsensitiveCompare:, localizedCompare:, localizedCaseInsensitiveCompare:.
は、私はこのようなカテゴリを書きました*キャッチされていないexcepによるアプリの終了理由: 'サポートされていない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)とは対照的です。私はまだどんな解決策にも感謝します。
あなたの質問は理解するのが少し難しいです。あなたがコアデータを持っていると言うよりも、NSStringを持っていると言います。そしてあなたの「要約」は別のことを言います。あなたの質問を洗練し、いくつかのコードスニペットを提供してください。それは答えを得るチャンスを大きく増加させるでしょう。 – Krizz
NSNumberはintではありません。 –
@Krizzあなたが正しいです。それはひどいポストだった。私は明確にしようとしました。 – Kurt