我的图像没有错误?
I'm getting nil error with image?
我遇到致命错误:在展开可选值时意外发现 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 与视图没有关联。
您的网点为零,发生这种情况的原因有多种。
- 它们尚未在界面生成器中连接。
- 您在实例化之前访问它们,例如在调用 viewDidLoad() 之前。
所以,你犯了一个简单的错误。事实上,你的网点是零。但是,不是因为您没有在情节提要中分配它们,而是因为 setimage
是在 ViewController
.
的不同实例上调用的
您的第二个视图控制器中有一个 属性 view1
,声明为:
let view1: ViewController = ViewController()
这将创建 ViewController
的新实例。当您随后调用 view1.setimage
时会发生崩溃,因为此实例的插座未连接。
你的第二个视图控制器中的属性应该是
var view1: ViewController!
并且在 ViewController
的 imageTapped
方法中,您应该修改代码,使其具有以下行:
view.view1 = self
强制解包可能并不理想,但只要确保在实例化第二个视图控制器时设置 view1
属性.
,它应该可以工作
我遇到致命错误:在展开可选值时意外发现 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 与视图没有关联。
您的网点为零,发生这种情况的原因有多种。
- 它们尚未在界面生成器中连接。
- 您在实例化之前访问它们,例如在调用 viewDidLoad() 之前。
所以,你犯了一个简单的错误。事实上,你的网点是零。但是,不是因为您没有在情节提要中分配它们,而是因为 setimage
是在 ViewController
.
您的第二个视图控制器中有一个 属性 view1
,声明为:
let view1: ViewController = ViewController()
这将创建 ViewController
的新实例。当您随后调用 view1.setimage
时会发生崩溃,因为此实例的插座未连接。
你的第二个视图控制器中的属性应该是
var view1: ViewController!
并且在 ViewController
的 imageTapped
方法中,您应该修改代码,使其具有以下行:
view.view1 = self
强制解包可能并不理想,但只要确保在实例化第二个视图控制器时设置 view1
属性.