2009-10-05 8 views
8

私には2種類の異論があります:場所と履歴項目です。 履歴項目に添付されている場所を取得しようとしています。そのため、場所の取得述語が「history。@ count> 0」で正常に動作しています。NSSortDescriptorと多対多の関係

NSSortDescriptorでロケーションオブジェクトを最新の履歴アイテムの日付でソートすることもできます。これは、「history. @ max.time」となるまでは以下のようになりますエラー:

 
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', 
    reason: 'Keypath containing KVC aggregate where there shouldn't be one; 
    failed to handle [email protected]' 

HALP PLOX?

+0

'location.history'は配列/セットですか? (1つのように見えますが、あなたは単数形です) –

+0

それはそれを意味する多対多の関係です。単数形は私の悪いですが、私は今何かを壊すのを避けるためにそれを混乱させたくありません。 –

+2

Joonas、これを理解しましたか?私はまったく同じ状況にあり、この同じエラーが発生しています。ありがとうございました – kdbdallas

答えて

1

おそらく最高の解決策ではないかもしれませんが、データを取り戻して事実の後でソートすることができます。 Sorting and Filtering NSArray Objectsをご覧ください。ここで

0

は私が私の知る限り同様の

NSError *error; 

if (![[self fetchedResultsController] performFetch:&error]) 
{ 
    UIAlertView *alert = [[[UIAlertView alloc] initWithTitle:@"Error" message:[error localizedDescription] delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil] autorelease]; 
    [alert show]; 
} 
else 
{ 
    self.feedsArray = [fetchedResultsController fetchedObjects]; 

    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"[email protected]" ascending:NO]; 
    NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil]; 

    self.feedsArray = [feedsArray sortedArrayUsingDescriptors:sortDescriptors]; 

    [sortDescriptors release]; 
    [sortDescriptor release]; 

    NSInteger overviewAmount = [[feedsArray valueForKeyPath:@"@sum.unreadArticles"] integerValue]; 

    .... 
} 
+0

それはどうしたのでしょうか?修正された可能性のあるコード内に何も表示されません... –

+0

私は正確にはわかりません...あなたのエンティティをサブクラス化しましたか?私の両方とも(上記の例ではエンティティをフェッチしていますが、記事のエンティティはサブクラス化されています)記事のサブクラスでは特別なものはありません。なぜサブクラス化したのか、これが理由だった...別の考えは私の記事エンティティ属性のpostDate私は@ maxを行うには私はインデックスにするためにモーダルに設定している。おそらくそれを試してみてください。また、日付の値にデフォルト値が設定されていることを確認してください。私は以下を使用しています:1980-01-01 00:00:01 – kdbdallas

4

を行う場合は、あなただけの、collectionsNSArrayNSSetを使用してソート記述子のキーのパスに対して、Key-Value Coding Programming Guideで説明した、collection operatorsを使用する必要があります持っているいくつかのコードですNSDictionary)。

フェッチ要求(NSFetchRequest)を持つソート記述子のキーパスには、コレクション演算子を使用しないでください。

@kdbdallasは、コレクション演算子を正しく使用してNSArrayをソートします。彼はフェッチ要求のソート記述子を指定するためにそれを使用していません。

コレクションの演算子がフェッチ要求をソートするキーパスを指定していれば、甘いでしょう。この機能リクエストをhttp://bugreport.apple.com/に送信してください。報告が多いほど、サポートする可能性が高くなります。

+0

私はAppleにこの問題を提出しました:ID:9758650、Title:コレクション演算子はCore Data、Product:iPhone SDK、Classification:Enhancement、 -2011 12:26 AM、状態:公開 – ma11hew28

+0

私はrdar:// 10468062と同じタイトルを付け、DepartmentsとEmployeesの例を提出しました。それを提案する人が多いほど、より良いことです! – theory

+0

オープンレーダーでバグレポート10468062が見つかりません。それは本当に私がもっと簡単にそれを欺くことができるように助けるだろう。 – samvermette