2016-04-04 8 views
0

は私がそうのようなフェッチ要求を行い明らかに存在しているにもかかわらず、0の結果を返します。フェッチスウィフト要求は192の結果

しかし、私は自分自身でこれを行う:

managedObjectContext.executeFetchRequest(pageFetchRequest) 

は、私はすべての192件の結果を得ます。私がresultsのような変数にそれを割り当てない限り、何故ですか?これを割り当てるか、またはtryメソッドを使用すると、これは機能しませんか?

更新

これは完全なポストです。私がmanagedObjectContextを2つの異なる関連要求に対して2回使用していることに注目してください。たぶんそれは私の結果をボトミングしているのでしょうか?

let managedObjectContext = self.managedObjectContext 

    for item in items { 
     let word = Word(chapter: Int(item.chapter)!, verse: Int(item.verse)!, sanskrit: item.sanskrit, english: item.english, insertIntoManagedObjectContext: managedObjectContext) 

     // Assign the Page 
     let pageFetchRequest = NSFetchRequest(entityName: "Word") 
     let chapterPred = NSPredicate(format: "(chapter = %d)", Int(item.chapter)!) 
     let versePred = NSPredicate(format: "(verse = %d)", Int(item.verse)!) 
     pageFetchRequest.fetchLimit = 1 
     pageFetchRequest.predicate = NSCompoundPredicate(type: .OrPredicateType, subpredicates: [chapterPred, versePred]) 

     do { 
      let results = try managedObjectContext.executeFetchRequest(pageFetchRequest) 
      if let page = results.first as? NSManagedObject { 
       word.setValue(page, forKey: "page") 
      } 

     } catch let error as NSError { 
      print("Could not save \(error), \(error.userInfo)") 
     } 

     do { 
      try managedObjectContext.save() 
     } catch let error as NSError { 
      print("Could not save \(error), \(error.userInfo)") 
     } 
+0

変数に代入していないときに192の結果が得られたことをどう知っていますか? – Macondo2Seattle

+0

@ Macondo2Seattleその行にデバッガを設定し、 'po 'の前にaformentioned行を実行していないから – Trip

+0

エラーを検出するためのキャッチブロックはありますか?ドキュメントごとにエラーがある場合、executeFetchRequestはnilを返します。 –

答えて

0

だから、明らかに答えは..私は思う...親1と混同されない別のmanagedObjectContextを作成することでした...ようなので:

   let appDelegate   = UIApplication.sharedApplication().delegate as! AppDelegate 
       let secondManagedContext = appDelegate.managedObjectContext 
       let pageFetchRequest = NSFetchRequest(entityName: "Page")Int(item.verse)!) 
       pageFetchRequest.fetchLimit = 1 
       pageFetchRequest.predicate = NSCompoundPredicate(type: .OrPredicateType, subpredicates: [chapterPred, versePred]) 

そして私がしなければなりませんでしたまた、次のように書いてください。

   do { 
        var results:[NSManagedObject] 
        results = try secondManagedContext.executeFetchRequest(pageFetchRequest) as! [Page] 
        if let page = results.first { 
         word.setValue(page, forKey: "page") 
        } 
関連する問題