我的图像没有错误?

I'm getting nil error with image?

1 2

我遇到致命错误:在展开可选值时意外发现 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 )

}
}

}

我认为这与 Andriy 的建议相同。可能是您的图片 Outlet 与视图没有关联。

您的网点为零,发生这种情况的原因有多种。

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

所以,你犯了一个简单的错误。事实上,你的网点是零。但是,不是因为您没有在情节提要中分配它们,而是因为 setimage 是在 ViewController.

的不同实例上调用的

您的第二个视图控制器中有一个 属性 view1,声明为:

let view1: ViewController = ViewController()

这将创建 ViewController 的新实例。当您随后调用 view1.setimage 时会发生崩溃,因为此实例的插座未连接。

你的第二个视图控制器中的属性应该是

var view1: ViewController!

并且在 ViewControllerimageTapped 方法中,您应该修改代码,使其具有以下行:

view.view1 = self

强制解包可能并不理想,但只要确保在实例化第二个视图控制器时设置 view1 属性.

,它应该可以工作