gpt4 book ai didi

Swift:尝试实现 NSCoding

转载 作者:行者123 更新时间:2023-11-30 10:09:25 38 4
gpt4 key购买 nike

我正在尝试将 NSCoding 协议(protocol)添加到我的自定义类中:

class Convo: NSObject, NSCoding {
var name: String
var pic: UIImage

override init() {
self.name = "Dror"
self.pic = UIImage (named: "NoPic.png")!
super.init()
}

required init(coder aDecoder: NSCoder) {
self.name = aDecoder.decodeObjectForKey("name") as! String
self.pic = aDecoder.decodeObjectForKey("pic") as! UIImage
}

func encodeWithCoder(aCoder: NSCoder) {
aCoder.encodeObject(self.name, forKey: "name")
aCoder.encodeObject(self.pic, forKey: "pic")
}

}

但它会在以下行弹出错误:

self.pic = aDecoder.decodeObjectForKey("pic") as! UIImage

控制台中的错误是:

fatal error: unexpectedly found nil while unwrapping an Optional value

xcode 中的错误是:

Thread 1:EXC_BAD_INSTRUCTION(code=EXC_I386_INVOP,subcode=0x0)

我不知道该怎么办。

编辑:运行此代码时:

class Convo: NSObject, NSCoding {
var name: String
var pic: UIImage!

override init() {
self.name = "Dror"
self.pic = UIImage (named: "NoPic.png")!
super.init()
}

required init(coder aDecoder: NSCoder) {
self.name = aDecoder.decodeObjectForKey("name") as! String
self.pic = aDecoder.decodeObjectForKey("pic") as? UIImage
}

func encodeWithCoder(aCoder: NSCoder) {
aCoder.encodeObject(self.name, forKey: "name")
aCoder.encodeObject(self.pic, forKey: "pic")
}
}

编译没问题,但是 self.pic 最终是 nil 而不是 UIImage(名为:“NoPic.png”)

最佳答案

您确定您的 Assets 中有所需的图像吗?“NoPic.png”

好的,这里有一些更改:

class Convo: NSObject, NSCoding {
var name: String
var pic: UIImage?

override init() {
self.name = "Dror"
self.pic = UIImage (named: "NoPic")
super.init()
}

它对我有用,但您必须确保该图像存在于您的 Assets 中。您可以跳过.png格式

关于Swift:尝试实现 NSCoding,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33847550/

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