Я новичок в 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.")
}
}
Просмотр резьбовыми (увеличить счетчик, и сохранить на диск
@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 в приложение? –
@ Юджин Женя Гордин - короткий ответ на этот вопрос - я просто хочу тренироваться с coredata. спасибо за предложение! – Joe