Core data Xcode 8 Swift 3核心数据太多

Core data Xcode 8 Swift 3核心数据太多,core-data,Core Data,我刚刚开始学习使用Swift 3中的核心数据。我试图保存和检索一些变量,以便学习基本游戏,但每次保存/检索时,都会创建一个附加值。现在我有多达75个条目,每个条目都有一组变量。我想要一个我可以一起工作的。是否有办法将总数保持在1(在保存新的之前删除旧的) 或者,是否有更好的方法来处理ViewController之间的数据 谢谢 func retrieveCoreData() { // let appDelegate = UIApplication.shared.delega

我刚刚开始学习使用Swift 3中的核心数据。我试图保存和检索一些变量,以便学习基本游戏,但每次保存/检索时,都会创建一个附加值。现在我有多达75个条目,每个条目都有一组变量。我想要一个我可以一起工作的。是否有办法将总数保持在1(在保存新的之前删除旧的)

或者,是否有更好的方法来处理ViewController之间的数据

谢谢

func retrieveCoreData() {
    //        let appDelegate = UIApplication.shared.delegate as! AppDelegate
    let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
    let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Variables")
    request.returnsObjectsAsFaults = false
    do
    {
        let results = try context.fetch(request)

        if results.count > 0 {
            for result in results as! [NSManagedObject]
            {
                atHome = result.value(forKey: "atHome") as! Int
                playerGold = result.value(forKey: "playerGold") as! Int
                battleBoss = result.value(forKey: "battleBoss") as! Bool
                enemyAttack = result.value(forKey: "enemyAttack") as! Int
                enemyDefense = result.value(forKey: "enemyDefense") as! Int
                enemyHealth = result.value(forKey: "enemyHealth") as! Int
                enemyHealthMax = result.value(forKey: "enemyHealthMax") as! Int
                inBattle = result.value(forKey: "inBattle") as! Bool
                playerAttack = result.value(forKey: "playerAttack") as! Int
                playerDefense = result.value(forKey: "playerDefense") as! Int
                playerGold = result.value(forKey: "playerGold") as! Int
                playerHealth = result.value(forKey: "playerHealth") as! Int
                playerLevel = result.value(forKey: "playerLevel") as! Int
                playerLevelUpgradeValue = result.value(forKey: "playerLevelUpgradeValue") as! Int

            }
        }
    }
    catch {
        fatalError("Failed to recover CoreData: \(error)")
    }

}
func retrieveCoreData(){
//让appDelegate=UIApplication.shared.delegate为!appDelegate
让上下文=(UIApplication.shared.delegate为!AppDelegate)。persistentContainer.viewContext
let request=NSFetchRequest(entityName:“变量”)
request.returnsObjectsAsFaults=false
做
{
let results=try context.fetch(请求)
如果results.count>0{
对于结果,结果为![NSManagedObject]
{
atHome=result.value(forKey:“atHome”)为!Int
playerGold=result.value(forKey:“playerGold”)为!Int
战地老板=结果.值(forKey:“战地老板”)为!Bool
enemyAttack=result.value(forKey:“enemyAttack”)为!Int
enemyDefense=result.value(forKey:“enemyDefense”)为!Int
enemyHealth=result.value(forKey:“enemyHealth”)为!Int
enemyHealthMax=result.value(forKey:“enemyHealthMax”)为!Int
inBattle=结果.值(forKey:“inBattle”)为!Bool
playerAttack=result.value(forKey:“playerAttack”)为!Int
playerDefense=result.value(forKey:“playerDefense”)为!Int
playerGold=result.value(forKey:“playerGold”)为!Int
playerHealth=result.value(forKey:“playerHealth”)为!Int
playerLevel=result.value(forKey:“playerLevel”)为!Int
playerLevelUpgradeValue=result.value(forKey:“playerLevelUpgradeValue”)为!Int
}
}
}
抓住{
fatalError(“无法恢复CoreData:\(错误)”)
}
}
以下是打印的值列表:(注“p12”)

(实体:变量;id:0x14644960;数据:{
atHome=1;
battleBoss=0;
灌肠攻击=1;
灌肠防御=1;
enemyHealth=1;
enemyHealthMax=1;
内巴特尔=0;
playerAttack=6;
玩家防御=3;
playerGold=0;
玩家健康=200;
playerHealthMax=0;
playerLevel=1;
playerLevel升级值=350;
})

您的代码在哪里?您在哪里创建
变量
实体?在创建另一个之前,您是否正在测试是否已经存在一个?变量是在第一个文本块中调用的CoreData的名称,实际变量在加载时初始化,核心数据存储并还原到其中。在debug菜单中,我可以让它打印出上面的列表乘以条目数。我的主要测试设备有75多个实例是的,但Jon的意思是,你的代码必须在某个地方创建所有这些实例,这就是你需要在问题中包含的代码。您正在创建您不想要的实例,因此请在创建它们的位置显示代码。
<Variables: 0x1466d150> (entity: Variables; id: 0x14644960 <x-coredata://2E613846-F77C-4492-B27E-5A79AEC58949/Variables/p12> ; data: {
    atHome = 1;
    battleBoss = 0;
    enemyAttack = 1;
    enemyDefense = 1;
    enemyHealth = 1;
    enemyHealthMax = 1;
    inBattle = 0;
    playerAttack = 6;
    playerDefense = 3;
    playerGold = 0;
    playerHealth = 200;
    playerHealthMax = 0;
    playerLevel = 1;
    playerLevelUpgradeValue = 350;
})