2016-04-25 12 views
0

fetchRequestの結果の重複項目を除外しようとしています。NSFetchRequest ReturnsDistinctResultsが空の結果を返す

let sortDescriptor = NSSortDescriptor(key: "lastupdate", ascending: false) 
     let sortDescriptors = [sortDescriptor] 

     var appDel:AppDelegate = (UIApplication.sharedApplication().delegate as! AppDelegate) 
     var context:NSManagedObjectContext = appDel.managedObjectContext 

     let fetchRequest = NSFetchRequest(entityName:"Details") 
     fetchRequest.sortDescriptors = sortDescriptors 
      fetchRequest.propertiesToFetch = [ "orig_id" ] 
      fetchRequest.resultType = NSFetchRequestResultType.DictionaryResultType 
      fetchRequest.returnsDistinctResults = true 


     let company_temp = try context.executeFetchRequest(fetchRequest) 
     let company = company_temp as! [Details] 
     for t in company { 
      let id = t.orig_id 
      print(id) 
      self.myarray.append("\(id)") 

     } 

私がコメントアウトこれら3行:

fetchRequest.propertiesToFetch = [ "orig_id" ] 
      fetchRequest.resultType = NSFetchRequestResultType.DictionaryResultType 
      fetchRequest.returnsDistinctResults = true 

が、私は私の配列の8項目を取得し、私は次のコードを使用します。私のコードで何が間違っていますか?

+0

あなたが 'company_temp'を印刷するとどうなりますか?現時点であなたはクラッシュするのですか? – Wain

+0

空ですが、 '[]' –

答えて

0

コンテキストを保存しましたか?
私は同じ問題を抱えていました。保存されていない変更があると、NSDictionaryResultTypeは永続ストアの現在の状態を反映しません。 includesPendingChanges:メソッドについては、Apple Docsを参照してください。

コードの前に単純なcontext.save()があると、問題が解決される可能性があります。

もう1つの問題は、に戻るとDictionaryが返されるため、この行がクラッシュすることです。 NSManagedObjectのリストではありません。

関連する問題