gpt4 book ai didi

ios swift,如何转换 'object to nsdata'

转载 作者:搜寻专家 更新时间:2023-10-31 22:43:56 26 4
gpt4 key购买 nike

我想定义一个c++结构体作为swift代码并序列化和反序列化它写入socket。

class PacketHeader: NSObject, NSCoding {
var ver: UInt8 = 0
var len: UInt32 = 0

required init(coder aDecoder: NSCoder) {
??
}

func encode(with aCoder: NSCoder) {
??
}
}

我找不到对 uint8、uint32 进行解码和编码的函数。

最佳答案

Xcode 8 (Swift 3) Playground :

class PacketHeader: NSObject, NSCoding {
var ver: UInt8 = 0
var len: UInt32 = 0

override init() {
super.init()
}

required init(coder aDecoder: NSCoder) {

if let ver = aDecoder.decodeObject(forKey: "ver") as? NSNumber {
self.ver = ver.uint8Value
}

if let len = aDecoder.decodeObject(forKey: "len") as? NSNumber {
self.len = len.uint32Value
}

}

func encode(with aCoder: NSCoder) {
aCoder.encode(NSNumber(value: ver), forKey: "ver")
aCoder.encode(NSNumber(value: len), forKey: "len")
}

}

let data = PacketHeader()
data.ver = 10
data.len = 8

let savedData = NSKeyedArchiver.archivedData(withRootObject: data)
let obj = NSKeyedUnarchiver.unarchiveObject(with: savedData) as? PacketHeader
obj?.ver
obj?.len

关于ios swift,如何转换 'object to nsdata',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41360333/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com