iOS: Nullzeigerreferenz beim Codieren eines Nicht-Null-Enum-Typs?
淡淡烟草味
淡淡烟草味 2017-05-31 10:36:30
0
1
890

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)

淡淡烟草味
淡淡烟草味

Antworte allen(1)
阿神

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

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage