2016-12-07 13 views
1

マップに追加されたピンに関連するデータを保存しようとしています。ユーザーがマップにピンを追加するたびに、ピンの緯度、経度、およびタイトルを保存する必要があります。ここに私の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

1対1の関係があると思いますので、あるオブジェクトの 'currentBook'を' pinToBook'に設定すると自動的に 'nil'に設定されます前の1つで – alexburtnik

+1

それはそれでした!私はすでに関係を築いていたと思ったが、感謝していなかった! –

答えて

0

私はあなたが1つのオブジェクトのpinToBookとしてcurrentBookを設定するときに、それは自動的に前の1にnilに設定されている一対一関係を持っていると思います。

それはあなたのケースなら1冊の本はpinToBook値として、複数のPinのオブジェクトで使用できるように、あなたは、一対多に関係を設定する必要があります。

関連する問題