我的图像出错了吗?

时间:2015-10-13 20:49:49

标签: swift cocoa-touch core-data uiimageview iboutlet

1 2

我遇到致命错误:在展开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 )

}
}

}

3 个答案:

答案 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)

你的网点是零,有几个原因可能会发生这种情况。

  1. 它们尚未在界面构建器中连接。
  2. 您在实例化之前访问它们,例如在调用viewDidLoad()之前。