0

すべての が同じ数の場合にNSFetchedResultsControllerのみ処理できるに奇妙な問題があります (これは、 を使用してエンティティを並べ替えます。これは、プレイリストの順序を維持するために属性を使用するプレイリストのようなものです。performFetchentity.numberNSFetchedResultsControllernumberindexNumber

- (IBAction)addSetPressed {
    int theNumber = [self.nameTextField.text intValue];
    WSet *set = [WSet wSetWithNumber:theNumber inManagedObjectContext:self.workout.managedObjectContext];
    [self.workout addExercisesObject:set];
}

self.nameTextFieldUITableViewのヘッダーにあります。たとえば、そこに番号を入力してから、を呼び出す1a を押します。このコードは、モデルにエンティティを追加することを目的としており、はモデルの変更を検出して my を更新します。UIButtonaddSetPressedNSFetchedResultsControllerUITableView

ここに問題があります: に1(または任意の数字)を入力すると、 を何度でもself.nameTextField押すことができ、コードはうまく機能します。UIButtonしかし、番号を変更するとself.nameTextField、エラーが発生します。

[__NSCFNumber localizedCaseInsensitiveCompare:]: unrecognized selector sent to instance 0xb665b80
CoreData: error: Serious application error.  Exception was caught during Core Data change processing.  This is usually a bug within an observer of NSManagedObjectContextObjectsDidChangeNotification.

過去 12 時間、コードをいじったり、問題を調査したりしましたが、わかりません。

あなたが私にヒントを与えたり、助けになる文献を教えてくれたりするのは素晴らしいことです.

4

2 に答える 2

3

修理済み!

これが問題です。をセットアップするときsortDescriptor、適切なセレクターを選択して、ソートする属性のタイプを比較する必要があります。

これは正しいです。NSNumber

request.sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"number" ascending:YES selector:@selector(compare:)]];

以前はセレクターがありましたNSString

于 2012-06-11T01:14:58.717 に答える
0

メソッドが送信されるのが好きNSNumberではないようlocalizedCaseInsensitiveCompare:です。

代わりにソート値を作成できるかどうかを確認するために、これを試してみますNSString

もっと良いアイデアがあれば教えてください!

于 2012-06-11T00:44:26.090 に答える