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を呼び出します。最新の挿入オブジェクトだけが保存されるのはなぜですか?前もって感謝します。
オブジェクト間の関係をCore Dataグラフに表示してください – alexburtnik
1対1の関係があると思いますので、あるオブジェクトの 'currentBook'を' pinToBook'に設定すると自動的に 'nil'に設定されます前の1つで – alexburtnik
それはそれでした!私はすでに関係を築いていたと思ったが、感謝していなかった! –