2017-09-23 94 views
0
let myPath = Bundle.main.path(forResource: "Settings", ofType: ".png") 

print(myPath!) 

为什么在我试图打印时会崩溃?Swift:打印时发生崩溃

+0

它可以让你构建它,但在电话上访问它时,它会崩溃 –

+0

您正在强制解包可选的myPath对象,并且即使它实际上为零,也试图将其打印出来。为什么你需要一个图像的路径? – Glenn

回答

4

该死机是着名的意外发现nil同时展开...错误。除非保证值不是nil,否则请勿使用感叹号。

或者该文件不存在,或(最有可能)您(扩展名)png.png

let myPath = Bundle.main.path(forResource: "Settings", ofType: "png") 

然而时下URL相关的API是优选的

let myURL = Bundle.main.url(forResource: "Settings", withExtension: "png") 
+3

有人可能会争辩说,你应该强制解开Bundle.main.url(或路径)的结果,因为你试图加载一个你期望在那里的文件。如果文件不存在,这是项目(或类型)的设置问题,并且您希望应用程序立即崩溃,以便您可以解决项目(或错字)的问题。 – rmaddy

1

我简单的猜测是,mypath中是零,所以它崩溃的零指针异常。删除感叹号和使用:

print(myPath) 

如果它打印零,那么你有你的答案。

+0

你知道它为什么是零吗? –