Ich versuche, ein kleines Programm zu machen, das die Anzahl der Zeiten zählt, die auf einer Taste gedrückt werden. Ich verwende Core Data, um die Informationen zu speichern. Das einzige Problem ist, dass ich nicht herausfinden kann, wie ich mit den Informationen in den Kerndaten rechnen soll. Wenn jemand mir sagen kann, wie man eine Variable im Code macht, die dem Wert der Information in den Core Data entspricht, weiß ich genug. Wenn es eine andere Möglichkeit gibt, mit den Core Data zu rechnen, über die ich gerne Bescheid wüsste.So berechnen Sie mit Core-Daten
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
}
Der Fehler es auf der Linie mit nummer = Nummer + = 1 gegeben ist: zuweisen kann nicht Wert vom Typ ‚()‘
ich alle Ihre Antworten schätzen ‚Double‘ eingeben.
Es wird dringend empfohlen, eine 'NSManagedObject'-Unterklasse zu verwenden. Wenn Sie mit 'Double' rechnen wollen, müssen Sie' var number = 0.0' mit einem Fließkomma-Literal deklarieren, da ein Literal '0' die Variable als 'Int' deklariert und - wie auch immer nicht zwingend erforderlich - Fließkomma verwendet Literale auch in den anderen Zeilen, um anzuzeigen, dass es sich um 'Double' handelt. "Results.count" = 0 ist übrigens Unsinn, "results" ist immer 0 oder mehr. Um zu überprüfen, ob das Array nicht leer ist, verwenden Sie '! Results.isEmpty' – vadian