2016-08-05 20 views
0

BeschreibungProblem mit dem Text eines TextField- mit Schnur aus NSManagedObject Unterklasse Einstellung

Ich bin sicher, dass ich in meiner Linie völlig falsch bin hier zu denken, aber mich tun korrigieren. Ich versuche einfach, eine Zeichenfolge zu referenzieren, die ich in einer meiner Objektunterklassen gespeichert habe. Ich tue das, indem ich einfach versuche, den Text eines textField auf den String zu setzen, den ich gespeichert habe (auf einen Knopfklick).

-Code

Im Folgenden finden Sie den Code für mein "CrawlerOne + CoreDataProperties.swift" Datei

import Foundation 
import CoreData 

extension CrawlerOne { 

@nonobjc class func fetchRequest() -> NSFetchRequest<CrawlerOne> { 
    return NSFetchRequest<CrawlerOne>(entityName: "CrawlerOne"); 
} 

@NSManaged var crawlerAbrasion: String? 
@NSManaged var crawlerDistance: String? 

} 

Hier zu finden ist der Teil, den ich wirklich raten, bin gerade. Dieser Code ist die Schaltfläche „Generieren“, die das Textfeld zu setzen versucht, die Zeichenfolge gespeichert werden

@IBAction func generate(_ sender: AnyObject) { 
    let appDel:AppDelegate = (UIApplication.shared().delegate as! AppDelegate) 
    let context:NSManagedObjectContext = appDel.managedObjectContext 
    let entity1 = NSEntityDescription.insertNewObject(forEntityName:"CrawlerOne", into:context) as NSManagedObject as! CrawlerOne 
    answer.text = entity1.crawlerAbrasion 
} 

Schließlich, hier ist der Code aus, wo ich gespeichert zunächst den String. Beachten Sie, dass diese beiden Funktionen sind in Differenz Klassen & Dateien

@IBAction func save(_ sender: AnyObject) { 
    let appDel:AppDelegate = (UIApplication.shared().delegate as! AppDelegate) 
    let context:NSManagedObjectContext = appDel.managedObjectContext 
    let entity1 = NSEntityDescription.insertNewObject(forEntityName: "CrawlerOne", into:context) as NSManagedObject as! CrawlerOne 
    entity1.crawlerDistance = distance.text 

} 

Fazit

wieder, ich bin absolut sicher, dass meine Linie hier zu denken, nur sehr ausgeschaltet ist, aber das ist etwas, was ich bin unter Druck gesetzt werden, um sehr schnell abzuschließen. Auch diesbezüglich gibt es in der Debug-Konsole keinerlei Fehler/Meldungen. Ich klicke einfach auf die Schaltfläche, um Text zu diesem Textfeld hinzuzufügen, und nichts passiert. Vielen Dank im Voraus! :)

+0

Ich bin mir nicht sicher, warum Sie versuchen, CrawlerOne auf ein verwaltetes Objekt zu reduzieren ... haben Sie versucht, es nur auf CrawlerOne zu werfen? Gibt es eine Unterklasse von NSManagedObject namens CrawlerOne, die Sie hier nicht aufgelistet haben? – ff10

+0

Können Sie mir Ihre Frage erklären? Ich bin nicht sehr gut mit swift und bin mir nicht sicher, was du meinst. @ ff10 – gavsta707

+0

Siehe meine Bearbeitung: Gibt es eine Unterklasse von NSManagedObject namens CrawlerOne, die Sie hier nicht aufgeführt haben? – ff10

Antwort

1

Nur wenige Dinge:

  • die Eigenschaft den String hält, ist nicht identisch in der generieren und speichern Methoden
  • nicht sicher, ob Sie NSManagedObject werfen müssen, wenn CrawlerOne ist bereits ein NSManagedObject
  • Sie versuchen, die Zeichenfolge abzurufen, indem Sie ein neues Objekt in den verwalteten Kontext einfügen, indem Sie das Ergebnis dieser Operation verwenden und die Beschriftung daher auf einen Text setzen, der null ist. Sie müssen einen NSFetchRequest mit geeigneten NSPredicates erstellen, um das ursprüngliche Objekt von Ihrem NSManagedContext abzurufen. Sie haben tatsächlich eine bereits in Ihrem CrawlerOne Erweiterung definiert:

class func fetchRequest() -> NSFetchRequest<CrawlerOne>

Jetzt müssen Sie es konfigurieren, um die Zeichenfolge zu erhalten (n) die Sie suchen. Wie bereits erwähnt, verwenden Sie NSPredicate dafür. Es gibt viele Beispiele dafür, wie z. here.