我是CoreData的新手。我建立了一個非常簡單的計數器界面,每次點擊視圖時數字都會增加1。非常簡單。需要實現CoreData,以便該數字在下次打開時保持不變。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.")
}
}
查看螺紋(增加計數器,並保存到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.")
}
}
當我加載應用程序的第一次,計數器爲0(因爲它應該是)。我可以點擊視圖遞增計數器通過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
現在對於這個問題,我需要調試:
一旦我點擊視圖,計數器重置爲0,並從那裏增加。不應該從15增加,因爲它應該!
我該如何解決這個錯誤,使計數器遞增到保存的數字(在本例中爲15)。此外,我創建了一個NSManagedObject子類,但似乎沒有使用它。上面的代碼是使用幾個YouTube教程創建的。這個代碼可以通過使用子類來優化嗎?每次點擊視圖時將此計數器保存到CD是否是不好的做法?
如果你想堅持的唯一事情是櫃檯,你爲什麼不只是使用而不是NSUserDefaults的帶來的疊CoreData的應用程序? –
@Eugene Zhenya Gordin - 簡短的回答就是我只想練習coredata。還是)感謝你的建議! – Joe