2015-10-27 4 views
8

Ich habe eine Objektklasse von NotSureItem, in der ich ein Attribut des Elements hinzufüge. In meiner App verwende ich Realm für die Datenbank, aber als ich die Beschreibungsattribute in meiner App hinzugefügt habe, zeigt es mir einen Fehler beim Überschreiben der gespeicherten Eigenschaft. Und es gibt auch einen Fehler wie diese 'Getter für' Beschreibung 'mit Objective-C-Selektor' Beschreibung 'Konflikte mit Getter für' Beschreibung 'von Superklasse' NSObject 'mit dem gleichen Objective-C-Selektor'. Hier ist meine Code-Objektklasse.Kann nicht überschrieben werden mit einer gespeicherten Eigenschaft 'description'

import Foundation 
import Realm 

class NotSureItem: RLMObject { 
    dynamic var title = "" 
    dynamic var description = "" 
    dynamic var dateTime = NSDate() 
} 
+0

Piyush richtig ist. Selbst wenn es nicht die Unterklasse "NSObject" wäre, würden Sie trotzdem den 'description' - Eigenschaftsnamen vermeiden wollen, weil das einen Konflikt mit' CustomStringConvertible' verursachen würde, sollten Sie diese Übereinstimmung irgendwann einmal hinzufügen wollen (sehr nützlich für Debugging-Zwecke). – Rob

Antwort

16

Weil es mit der -description Methode in NSObject Konflikten (Rückruf, die Kerndaten generieren dynamisch Eigenschaftenaccessoren und Mutatoren - eine Eigenschaft mit dem Namen ‚description‘ würde eine Accessor-Methode namens -description erfordern erstellen).

Beachten Sie, dass ein Eigenschaftsname nicht mit einem beliebigen Methodennamen von NSObject oder NSManagedObject übereinstimmen kann. Zum Beispiel können Sie einer Eigenschaft den Namen "Beschreibung" geben. Es gibt Hunderte von Methoden auf NSObject, die möglicherweise mit Eigenschaftsnamen in Konflikt stehen - und diese Liste kann ohne Warnung von Frameworks oder anderen Bibliotheken wachsen. Sie sollten vermeiden sehr allgemeine Wörter (wie „font“ und ‚Farbe‘) und Wörter oder Sätze, die mit Cocoa Paradigmen (wie ‚isEditing‘ und ‚objectSpecifier‘) überlappen.