我遇到致命错误:在展开Optional值时意外发现nil imagedata不是nil,它的值为2604750字节 我不知道为什么它显示这个错误,因为我可以看到img1为零为什么? 任何评论!!!
@IBOutlet var img1: UIImageView!
@IBOutlet var img2: UIImageView!
// in viewWillAppear I gave it a default image
self.img1.image = UIImage(named: "dummy.png" )
self.img1.image = UIImage(named: "dummy.png" )
// i changed to send the nsmanagedobject but it's still same error
func setimage(person: NSManagedObject){
let data: NSData = NSData()
if person.valueForKey("picture") as! NSData == data{
if person.valueForKey("tag") as! Int == 1 {
img1.image = UIImage(named: "dummy" )
}else if person.valueForKey("tag") as! Int == 2 {
img2.image = UIImage(named: "dummy")
}}
else{
if person.valueForKey("tag") as! Int == 1 {
img1!.image = UIImage(data: person.valueForKey("picture") as! NSData )
}else if person.valueForKey("tag") as! Int == 2 {
img2.image = UIImage(data: person.valueForKey("picture") as! NSData )
}
}
}
答案 0 :(得分:1)
所以,你有一个简单的错误。事实上,你的网点是零。但是,并不是因为您没有在故事板中分配它们,而是因为在setimage
的其他实例上调用了ViewController
。
您的第二个视图控制器中有一个属性view1
,声明为:
let view1: ViewController = ViewController()
这将创建ViewController
的新实例。然后,当您调用view1.setimage
时,您会收到崩溃,因为此实例的插座未连接。
第二个视图控制器中的属性应为
var view1: ViewController!
并且在imageTapped
的{{1}}方法中,您应该修改代码,以便它有这一行:
ViewController
强制解包可能并不理想,但只要您确保在实例化第二个视图控制器时设置view.view1 = self
属性,它就应该有效。
答案 1 :(得分:0)
我认为和Andriy建议的一样。可能您的图像插座与视图无关。
答案 2 :(得分:0)
你的网点是零,有几个原因可能会发生这种情况。