CoreData 只保存最近插入的 object
CoreData only saving most recently inserted object
我正在尝试保存与添加到地图的图钉关联的数据。每次用户将图钉添加到地图时,我都希望保存图钉的纬度、经度和标题。这是我的 savePin() 函数:
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()
}
问题是获取请求只返回最近插入的 pin:
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 时覆盖了数据。为什么只保存最近插入的 object?提前致谢。
我猜你有一个一对一关系,所以当你将currentBook
设置为一个对象的pinToBook
时,它会自动设置到上一个nil
。
如果是这种情况,您应该将关系设置为一对多,这样一本书就可以在多个Pin
对象中使用,如[=11] =]值。
我正在尝试保存与添加到地图的图钉关联的数据。每次用户将图钉添加到地图时,我都希望保存图钉的纬度、经度和标题。这是我的 savePin() 函数:
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()
}
问题是获取请求只返回最近插入的 pin:
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 时覆盖了数据。为什么只保存最近插入的 object?提前致谢。
我猜你有一个一对一关系,所以当你将currentBook
设置为一个对象的pinToBook
时,它会自动设置到上一个nil
。
如果是这种情况,您应该将关系设置为一对多,这样一本书就可以在多个Pin
对象中使用,如[=11] =]值。