suchen

Heim  >  Fragen und Antworten  >  Hauptteil

iOS: Nullzeigerreferenz beim Codieren eines Nicht-Null-Enum-Typs?

Die Struktur ist ungefähr so. Klasse A enthält ein Array der Klasse B und Klasse B enthält eine Variable vom Aufzählungstyp C.
A wird wie in der Abbildung gezeigt initialisiert, mit der Ausnahme, dass das B-Array in Klasse A wurde jedoch nicht geändert, wenn s in B codiert wurde (Aufzählung C ist Status), der Wert von s kann gut ausgegeben werden, aber beim Codieren von (s) wurde ein Fehler gemeldet (ich habe Haltepunkte auf beiden gesetzt). Sätze ausdrucken und kodieren, und letzteres stürzte ab, sobald ich es verließ)

func encode(with aCoder: NSCoder) {
        print(status)
        aCoder.encode(status, forKey: "status")
    }

Das Folgende sind einige Konsoleninformationen:

Normal


* App wird aufgrund der nicht erfassten Ausnahme „NSInvalidArgumentException“ beendet, Grund: „-[_SwiftValue encodeWithCoder:]: unbekannter Selektor an Instanz 0x608000444fb0 gesendet“


Gleichzeitig gibt es Thread 1: Signal SIGABRT oben in AppDelegate. Nach der Suche bei Google scheint es daran zu liegen, dass das Objekt vorzeitig veröffentlicht wurde, der Wert jedoch vor der Codierung noch gedruckt werden kann


Der Wert kann eingegeben werden, aber der Wert ist nicht der erwartete Wert. In einer Schleife vor der Codierung wird der Aufzählungstypwert jedes B des A-Klasse-B-Arrays einzeln ersetzt (das Objekt B wird nicht direkt ersetzt)

淡淡烟草味淡淡烟草味2737 Tage vor883

Antworte allen(1)Ich werde antworten

  • 阿神

    阿神2017-05-31 10:38:30

    已经找到原因了,原因就是枚举类型直接编译会产生各种问题,曲线救国存读枚举的值就行了

    Antwort
    0
  • StornierenAntwort