Я пытаюсь сделать небольшую программу, которая подсчитывает количество нажатий на кнопку. Я использую Core Data для хранения информации. Единственная проблема заключается в том, что я не могу понять, как выполнять вычисления с информацией в основных данных. Если кто-то может сказать мне, как сделать переменную в коде равной значению информации в Core Data, я знаю достаточно. Если есть другой способ вычислений с 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
}
Ошибка, выдаваемая в строке с nummer = number += 1: невозможно присвоить значение типа '()' типу 'Double'
Я ценю все ваши ответы.
NSManagedObject
. Если вы хотите выполнять математические операции сDouble
, вы должны объявитьvar number = 0.0
литералом с плавающей запятой, потому что литерал0
объявляет переменную какInt
, и — хотя это не обязательно — использовать литералы с плавающей запятой и в других строках, чтобы указать, что вы имеете дело сDouble
s. Кстатиresults.count >= 0
это бред,results
всегда 0 и больше. Чтобы проверить, не пуст ли массив, используйте!results.isEmpty
- person vadian   schedule 20.09.2017