3

私の単純なクラス ClassWithOneArray は、次のエラーを生成します。

ビットキャストでは、両方のオペランドがポインターであるか、どちらでもない必要があります %19 = bitcast i64 %18 to %objc_object*, !dbg !470 LLVM エラー: 壊れた関数が見つかり、コンパイルが中止されました! コマンド /Applications/Xcode6-Beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift が終了コード 1 で失敗しました

ただし、私のクラス ClassWithOneInt はそうではありません。なんで?

class ClassWithOneInt {
    var myInt = Int()
    init(myInt: Int) {
        self.myInt = Int()
    }
    func encodeWithCoder(aCoder: NSCoder) {
        aCoder.encodeObject(myInt, forKey: "myInt")
    }
    init(coder aDecoder: NSCoder) {
        self.myInt = aDecoder.decodeObjectForKey("myInt") as Int
    }
}

class ClassWithOneArray {
    var myArray = String[]()
    init(myArray: String[]) {
        self.myArray = String[]()
    }
    func encodeWithCoder(aCoder: NSCoder) {
        aCoder.encodeObject(myArray, forKey: "myArray")
    }
    init(coder aDecoder: NSCoder) {
        self.myArray = aDecoder.decodeObjectForKey("myArray") as String[]
    }
}
4

3 に答える 3

0

私の経験では、プロトコル「NSCoding」をクラスに宣言するだけでうまくいくはずです。これが誰かに役立つことを願っています。

于 2014-08-01T23:56:27.313 に答える