gpt4 book ai didi

ios - CoreData - 存储一个在点击按钮时更新的整数

转载 作者:行者123 更新时间:2023-11-28 06:43:13 26 4
gpt4 key购买 nike

我是 CoreData 的新手。我构建了一个非常简单的计数器界面,每次点击 View 时数字都会增加 1。非常简单。需要实现 CoreData,以便下次打开时该数字仍然存在。

这是我的代码

类级属性

var timer = Int()
var name = Int()
let appDel: AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate

viewDidLoad

override func viewDidLoad() {
super.viewDidLoad()
let context: NSManagedObjectContext = appDel.managedObjectContext
do {
let request = NSFetchRequest(entityName: "Model")
let results = try context.executeFetchRequest(request)

for item in results{
let name = item.valueForKey("counter") as! Int
print("The counter # saved in Core Data is: \(name)")
counterOutlet.text = "\(name)"

// Updated
if name > timer {
timer = name
}
}

}
catch {
print("Error retrieving from Core Data.")
}
}

View Tapped(增加计数器,并保存到 CD)

@IBAction func tapGestureRecognizerTapped(sender: UITapGestureRecognizer) {
timer += 1
print(timer)
counterOutlet.text = "\(timer)"

let context: NSManagedObjectContext = appDel.managedObjectContext

// Add stuff to CD
let mySavedCounter = NSEntityDescription.insertNewObjectForEntityForName("Model", inManagedObjectContext: context)
mySavedCounter.setValue(timer, forKey: "counter")


// Add the info to the entity!
do {
try context.save()
}
catch {
print("Error saving to Core Data.")
}
}

我的数据模型 xcdatamodel

当我第一次加载应用程序时,计数器为 0(应该是这样。)我可以点击 View 以将计数器递增 1。工作正常。

当我用力关闭该应用程序时,我会重新打开它以查看我离开时的值仍然存在! (太棒了!!)控制台日志显示如下:(我一到 15 就关闭了应用程序。)

The counter # saved in Core Data is: 1
The counter # saved in Core Data is: 2
The counter # saved in Core Data is: 3
The counter # saved in Core Data is: 4
The counter # saved in Core Data is: 5
The counter # saved in Core Data is: 6
The counter # saved in Core Data is: 7
The counter # saved in Core Data is: 8
The counter # saved in Core Data is: 9
The counter # saved in Core Data is: 10
The counter # saved in Core Data is: 11
The counter # saved in Core Data is: 12
The counter # saved in Core Data is: 13
The counter # saved in Core Data is: 14
The counter # saved in Core Data is: 15

现在我需要调试的问题:

一旦我点击 View ,计数器就会重置为 0,然后从那里递增。没有从 15 开始递增,这是应该的!

我如何修复此错误以使计数器递增到已保存的数字(在本例中为 15)。此外,我创建了一个 NSManagedObject 子类,但似乎没有使用它。上面的代码是使用几个 youtube 教程创建的。这段代码可以通过使用子类来优化吗?每次点击 View 时都将此计数器保存到 CD 是一种不好的做法吗?

最佳答案

在 viewDidLoad 中,您将 counterOutlet.text 设置为名称。您还必须将计时器设置为名称。 viewDidLoad 中的更新代码如下所示:

override func viewDidLoad() {
super.viewDidLoad()
let context: NSManagedObjectContext = appDel.managedObjectContext
do {
let request = NSFetchRequest(entityName: "Model")
let results = try context.executeFetchRequest(request)

for item in results{
let name = item.valueForKey("counter") as! Int
print("The counter # saved in Core Data is: \(name)")
counterOutlet.text = "\(name)"
timer = name
}

}
catch {
print("Error retrieving from Core Data.")
}
}

关于ios - CoreData - 存储一个在点击按钮时更新的整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37309108/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com