Опитвам се да направя малка програма, която да отчита колко пъти е натиснат бутон. Използвам Core Data за съхраняване на информацията. Единственият проблем е, че не мога да разбера как да изчислявам с информацията в основните данни. Ако някой може да ми каже как да направя променлива в кода равна на стойността на информацията в основните данни, знам достатъчно. Ако има друг начин за изчисляване с основните данни, бих искал да знам.
import UIKit
import CoreData
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let context = appDelegate.persistentContainer.viewContext
/*let newUser = NSEntityDescription.insertNewObject(forEntityName: "Data", into: context)
newUser.setValue(number, forKey: "number")
do{
try context.save()
print("Saved")
}catch{
print("Error occured in the saving process.")
}*/
let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Data")
request.returnsObjectsAsFaults = false
do{
let results = try context.fetch(request)
if results.count > 0{
for result in results as! [NSManagedObject]{
if let number = result.value(forKey: "number") as? Double{
print("number is ", number)
result.setValue(number + 1, forKey: "number")
do{
try context.save()
}catch{
}
}
}
}
}catch{
print("Error with fetching data.")
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
var number = 0.0
}
Грешката, която е дадена на реда с число = число += 1: Не може да се присвои стойност от тип „()“ на тип „Двойно“
Оценявам всички ваши отговори.
NSManagedObject
. Ако искате да правите математика сDouble
, трябва да деклариратеvar number = 0.0
с литерал с плаваща запетая, защото литерал0
декларира променливата катоInt
и – въпреки това не е задължително – използвайте литерали с плаваща запетая и в другите редове, за да посочите, че имате работа сDouble
s. Между друготоresults.count >= 0
е глупост,results
винаги е 0 или повече. За да проверите дали масивът не е празен, използвайте!results.isEmpty
- person vadian   schedule 20.09.2017