2017-09-20 1 views
1

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.

+0

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

Antwort

0

Das hat nichts mit Core Data zu tun. Diese Linie ist nicht sinnvoll:

nummer = nummerVar += 1 

Der += Betreiber erhöht nummerVar an seinem Platz. Sie weisen dies number zu, aber der Rückgabewert des Vorgangs += ist kein Double, Sie können ihn also nicht einem Double zuweisen.

Ich bin mir nicht ganz sicher, was Sie hier beabsichtigten. Sie könnten

nummer = nummerVar + 1 

gemeint Oder vielleicht gemeint Sie

nummerVar += 1 
nummer = nummerVar 

Entweder von denen sind gültiger Code, aber welche Sie benötigen, hängt ab, was Sie zu tun versuchen.

+0

Vielen Dank !!!! Du hast vollkommen recht. Ich musste nur ein + Zeichen anstelle von + = verwenden. Ich werde den Code auf den richtigen Code bearbeiten. –

+0

Nochmals vielen Dank! –