将 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

}