将 increase int 保存为多个核心数据实体
save increase int as multiple core data entities
在下面的 swift 代码中,我试图将整数保存到核心数据中。每次用户点击一个按钮时,都会创建一个新的 int。因此,如果用户点击按钮两次,核心数据中就会有 2 个 int 实体。我下面的代码有一个运行时错误,我不知道如何解决它。
pic
var pageNumber = 0
var itemName : [NSManagedObject] = []
func enterData() {
let appDeldeaget = UIApplication.shared.delegate as! AppDelegate
let context = appDeldeaget.persistentContainer.viewContext
let entity = NSEntityDescription.entity(forEntityName: "Player", in: context)
let theTitle = NSManagedObject(entity: entity!, insertInto: context)
theTitle.setValue(pageNumber, forKey: "positon")
do {
try context.save()
itemName.append(theTitle)
pageNumber += 1
}
catch {
}
self.theScores.reloadData()
positionTextField.text = ""
positionTextField.resignFirstResponder()
}
您引入了一些可能导致问题的并发症。
首先,如果我理解你的目的,itemName
不应该是NSManagedObject
的数组,而是[=13=的数组].此外,创建 theTitle
可以简化。
试试这个而不是你建议的代码:
var pageNumber = 0
// If I understand correctly, you should have an array of Players
var itemName : [Player] = []
func enterData() {
let appDeldeaget = UIApplication.shared.delegate as! AppDelegate
let context = appDeldeaget.persistentContainer.viewContext
// Simpler way to create a new Core Data object
let theTitle = Player(context: context)
// Simpler way to set the position attribute
theTitle.position = pageNumber // pageNumber must be of type Int64, otherwise use Int64(pageNumber)
do {
try context.save()
itemName.append(theTitle)
pageNumber += 1
} catch {
// handle errors
}
// rest of the code
}
在下面的 swift 代码中,我试图将整数保存到核心数据中。每次用户点击一个按钮时,都会创建一个新的 int。因此,如果用户点击按钮两次,核心数据中就会有 2 个 int 实体。我下面的代码有一个运行时错误,我不知道如何解决它。
pic
var pageNumber = 0
var itemName : [NSManagedObject] = []
func enterData() {
let appDeldeaget = UIApplication.shared.delegate as! AppDelegate
let context = appDeldeaget.persistentContainer.viewContext
let entity = NSEntityDescription.entity(forEntityName: "Player", in: context)
let theTitle = NSManagedObject(entity: entity!, insertInto: context)
theTitle.setValue(pageNumber, forKey: "positon")
do {
try context.save()
itemName.append(theTitle)
pageNumber += 1
}
catch {
}
self.theScores.reloadData()
positionTextField.text = ""
positionTextField.resignFirstResponder()
}
您引入了一些可能导致问题的并发症。
首先,如果我理解你的目的,itemName
不应该是NSManagedObject
的数组,而是[=13=的数组].此外,创建 theTitle
可以简化。
试试这个而不是你建议的代码:
var pageNumber = 0
// If I understand correctly, you should have an array of Players
var itemName : [Player] = []
func enterData() {
let appDeldeaget = UIApplication.shared.delegate as! AppDelegate
let context = appDeldeaget.persistentContainer.viewContext
// Simpler way to create a new Core Data object
let theTitle = Player(context: context)
// Simpler way to set the position attribute
theTitle.position = pageNumber // pageNumber must be of type Int64, otherwise use Int64(pageNumber)
do {
try context.save()
itemName.append(theTitle)
pageNumber += 1
} catch {
// handle errors
}
// rest of the code
}