Я пытаюсь сохранить данные, связанные с контактами, добавленными на карту. Каждый раз, когда пользователь добавляет булавку к карте, я хочу, чтобы lat, long и заголовок буфера были сохранены. Вот моя savePin функция():CoreData сохраняет только недавно вставленный объект
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()
}
Проблема в том, что только самый последний штырь вставляется возвращается в выборки запроса:
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)")
}
}
Я не думаю, что я перезаписывать данные, когда я вызов insertNewObject. Почему сохраняется только последний вставленный объект? Заранее спасибо.
Просьба показать взаимосвязь между вашими объектами в графе Core Data – alexburtnik
Я полагаю, что у вас есть отношения «один к одному», поэтому, когда вы устанавливаете 'currentBook' как' pinToBook' одного объекта, он автоматически устанавливается на 'nil' в предыдущем. – alexburtnik
Вот и все! Я думал, что уже установил отношения, но я не получил! –