Ich mache meine Anfrage holen wie so:Swift Abrufanforderung gibt 0 Ergebnisse, obwohl es klar 192 Ergebnisse
let pageFetchRequest = NSFetchRequest(entityName: "Page")
let results = try managedObjectContext.executeFetchRequest(pageFetchRequest)
Hier results
wird 0 results {}
zurück.
Aber ich tue dies für sich allein:
managedObjectContext.executeFetchRequest(pageFetchRequest)
ich alle 192 Ergebnisse. Solange ich es nicht einer Variablen wie results
zuweisen. Warum das? Wird dies durch das Zuweisen oder Verwenden der Methode try
verhindert?
aktualisieren
Dies ist die vollständige Post. Beachten Sie, wie ich managedObjectContext
zweimal für zwei verschiedene verwandte Anfragen verwende. Vielleicht verpfuscht das meine Ergebnisse?
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)")
}
Woher wissen Sie, dass Sie 192 Ergebnisse erhalten, wenn Sie nicht zu einer Variablen zuweisen? – Macondo2Seattle
@ Macondo2Seattle Vom Setzen eines Debuggers auf dieser Zeile und Ausführen der zuvor genannten Zeile mit vorangestelltem 'po' – Trip
Haben Sie einen Catch-Block, um Fehler zu erkennen? In der Dokumentation gibt executeFetchRequest bei einem Fehler nil zurück. –