2017-08-02 4 views
0

Ich habe eine NSManagedObject-Klasse mit zwei Beziehungen: courseA und courseB. Diese Beziehungen sollten in einer dynamischen Variablen dargestellt werden. Wie ist es möglich, diese Variable von außerhalb der Klasse zu ändern?Wie setze ich eine NSManaged Variable?

@objc(Universtity) 
    public class Universtity: NSManagedObject { 

     dynamic var name: String { 
      get { 
       let name = self.courseA?.name 
       return name! 
      } 
     } 
    } 

Zum Beispiel aus einem ViewController wie University.name = University.courseB.name? Ich habe über eine Notifikation nachgedacht, aber das scheint vielleicht etwas komplizierter zu sein.

Und wenn es keinen anderen Weg gibt, wie sollte ich den Beobachter innerhalb der Universität Klasse implementieren?

Vielen Dank für jede Idee.

Antwort

1

Mit Blick auf Ihren Code haben Sie eine "berechnete" oder "ready-only" Variable deklariert. Dies ist eine Variable, deren Wert von einer anderen Variablen oder einer Kombination von Variablen stammt.

Ich kann Ihr Datenmodell nicht sehen, daher ist nicht klar, ob Sie im Core Data Model einen Namensparameter definiert haben. Unabhängig davon, ob Sie die Logik etwas verwirrt haben, denn der von Ihnen definierte Getter bedeutet jeden Wert, den er halten könnte, würde sowieso ignoriert werden. Sie müssten einen Setter definieren, um self.courseA.name festzulegen, wenn Sie sicherstellen möchten, dass der Wert in geschrieben werden kann. Sie müssen sich nicht um Schlüsselwertcodierungsbenachrichtigungen kümmern, da sie vom verwalteten Objekt "Core Data" ausgelöst werden.

Auch das Muster, das Sie verwendet haben, um einen nicht optionalen Wert in Ihrem Getter auszupacken, ist nicht optimal. Ich habe das nicht bearbeitet, weil das eine andere Diskussion ist, aber ich würde vorschlagen, dass Sie sich die Frage stellen, bin ich sicher, warum ich das mache? für jeden "?" und "!" Sie nutzen.

Verwandte Themen