Ich versuche Daten zu speichern, die mit Pins verknüpft sind, die zu einer Map hinzugefügt werden. Jedes Mal, wenn ein Benutzer einen Pin zu einer Map hinzufügt, möchte ich Lat, Long und Titel des Pins speichern. Hier ist meine savePin() Funktion:CoreData speichert nur das zuletzt eingefügte Objekt
func savePin(location: BibleLocation) {
let newPin = NSEntityDescription.insertNewObject(forEntityName: "Pin", into: context!) as! Pin
newPin.setValue(location.lat, forKey: "lat")
newPin.setValue(location.long, forKey: "long")
newPin.setValue(location.name, forKey: "title")
newPin.setValue(currentBook, forKey: "pinToBook")
pinsForBook.append(newPin)
appDelegate.saveContext()
}
Das Problem ist, dass nur der letzte Stift eingeführt durch eine Abrufanforderung zurückgegeben wird:
func getPinsForGlossary() {
let request: NSFetchRequest<Pin> = Pin.fetchRequest()
let p = NSPredicate(format: "pinToBook = %@", currentBook!)
request.predicate = p
pinsForBook = []
do {
let results = try context!.fetch(request as! NSFetchRequest<NSFetchRequestResult>)
pinsForBook = results as! [Pin]
} catch let error as NSError {
print("Could not fetch \(error), \(error.userInfo)")
}
}
Ich glaube nicht, dass ich Daten bin überschreiben, wenn ich Aufruf von insertNewObject. Warum wird nur das zuletzt eingefügte Objekt gespeichert? Danke im Voraus.
Bitte zeigen Sie die Beziehung zwischen Ihren Objekten in Core Data Grafik – alexburtnik
Ich denke, Sie haben eine Eins-zu-Eins-Beziehung, so wenn Sie 'currentBook' als' pinToBook' eines Objekts, wird es automatisch auf 'nil' gesetzt in der vorherigen. – alexburtnik
Das war es! Ich dachte, ich hätte die Beziehungen schon festgelegt, aber ich hatte nicht Danke! –