2016-06-18 15 views
0

私はNSFetchedResultsController sortDescriptorで問題を抱えています。私は、To-Many関係を持ち、sortDescriptorとして使用したいと思っています。私の問題は、このデータがNSSetにあることです。それを私のsortDescriptorでどうやって使うことができますか?私はそれを実行したときに私が得た:NSFetchedResultsController - NSSortDescriptorとして対多の関係を使用して - スウィフト

「キャッチされない例外により 『NSInvalidArgumentException』、理由にアプリを終了: 『ここでは使用できないように、多くのキー』」 エラー。

私は基本的にDEVICEエンティティとTESTエンティティを持っています。私は、TESTエンティティの最新の日付を使ってデバイスをソートしたいと思います。 Googleにこのリソースを使用する際のリソースが不足していると判断して、それが可能かどうか疑問に思うようになります。これを達成するための最も簡単な方法は何ですか?

func fetchByFloor(){ 
    let fetch = NSFetchRequest(entityName: "Device") 
    let sort = NSSortDescriptor(key: "estMessageFloor", ascending: false) 
    let sortTested = NSSortDescriptor(key: "latestTestDate", ascending: true) 

    let sortAddress = NSSortDescriptor(key: "estAddress", ascending: true) 
    let sortChanged = NSSortDescriptor(key: "deviceWasEdited", ascending: true) 
    fetch.sortDescriptors = [sort,sortTested, sortAddress] 
    fetch.fetchBatchSize = 20 

    let controller = NSFetchedResultsController(fetchRequest: fetch, managedObjectContext: ad.managedObjectContext, sectionNameKeyPath: "estMessageFloor", cacheName: nil) 

    controller.fetchRequest.predicate = devicePredicate 
    controller.delegate = self 

    fetchedResultsController = controller 

    navigationItem.title = "Building: \(currentBuilding)" 

} 
+0

.....物事を取得するかもしれないリグジョブの方法のように思えるが、よりよい解決策が見つからない場合、これは今の仕事をしているようですコードの –

+0

解決策は問題ありません。より再利用可能なTESTとの1対1の関係で同じことを行うこともできますが、最終的な結果は同じです。 to-manyの並べ替え記述子を設定することはできませんので、関係を何とか縮小する必要があります。 – Wain

答えて

1

私の質問に本当の答えが、私の周りの仕事はそれが今のために働いて実装されていません: 私はlastestTestDateのための私のDEVICEエンティティ内の別の属性を追加しました。このデバイスにTESTエンティティが追加されるたびに、私はNSSetをソートして最初のものを返す関数を実行します。私はその最初の結果を私のlatestTestDateとして保存します。私はソート・ディスクリプタでそれを使って、物事を整理します。あなたが質問で実際のコードの代わりに絵を掲示する必要があり

関連する問題