2016-12-07 4 views
1

Я пытаюсь сохранить данные, связанные с контактами, добавленными на карту. Каждый раз, когда пользователь добавляет булавку к карте, я хочу, чтобы 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. Почему сохраняется только последний вставленный объект? Заранее спасибо.

+0

Просьба показать взаимосвязь между вашими объектами в графе Core Data – alexburtnik

+0

Я полагаю, что у вас есть отношения «один к одному», поэтому, когда вы устанавливаете 'currentBook' как' pinToBook' одного объекта, он автоматически устанавливается на 'nil' в предыдущем. – alexburtnik

+1

Вот и все! Я думал, что уже установил отношения, но я не получил! –

ответ

0

Я предполагаю, что у вас есть отношения с один-к-одному, поэтому при установке currentBook в pinToBook одного объекта, он автоматически устанавливается на nil в предыдущем.

Если это ваш случай, вы должны установить отношения к один-ко-многим, так что одна книга может быть использована в нескольких PinpinToBook объекты как значение.

Смежные вопросы