调试NSImage打开BMP图片文件失败
Debugging NSImage's failure to open a BMP image file
var fileManager:NSFileManager = NSFileManager()
var imagePath:String = "/Users/dumbledad/Documents/flower.bmp"
var msg:String = (fileManager.fileExistsAtPath(imagePath) ? " exists" : " does not exist")
print(imagePath + msg)
var imageNS = NSImage(named: imagePath)!
当我 运行 我看到的应用程序时
/Users/dumbledad/Documents/flower.bmp exists
fatal error: unexpectedly found nil while unwrapping an Optional value
和错误 Thread 1:EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
。
如何调试 NSImage 无法打开图像文件的原因?如果我在 Finder 的预览中打开图像,它会正确显示。
要使用 NSImage(named:)
初始化程序,图像文件必须嵌入到您的 Xcode 项目中。
图像名称示例 "hello.jpg":
let img = NSImage(named: "hello")
只有当图像存在于您的应用程序中时,这才有效。
目前您正在将 path 传递给 NSImage 初始值设定项,而不仅仅是您应该使用此 named
初始值设定项的文件名。
另一方面,要从文件系统加载图像(这一次,不包含在您的应用程序中),您可以将 NSImage(contentsOfFile:)
与您的路径一起使用,或将 NSImage(contentsOfURL:)
与您的 NSURL 一起使用路径。
var fileManager:NSFileManager = NSFileManager()
var imagePath:String = "/Users/dumbledad/Documents/flower.bmp"
var msg:String = (fileManager.fileExistsAtPath(imagePath) ? " exists" : " does not exist")
print(imagePath + msg)
var imageNS = NSImage(named: imagePath)!
当我 运行 我看到的应用程序时
/Users/dumbledad/Documents/flower.bmp exists fatal error: unexpectedly found nil while unwrapping an Optional value
和错误 Thread 1:EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
。
如何调试 NSImage 无法打开图像文件的原因?如果我在 Finder 的预览中打开图像,它会正确显示。
要使用 NSImage(named:)
初始化程序,图像文件必须嵌入到您的 Xcode 项目中。
图像名称示例 "hello.jpg":
let img = NSImage(named: "hello")
只有当图像存在于您的应用程序中时,这才有效。
目前您正在将 path 传递给 NSImage 初始值设定项,而不仅仅是您应该使用此 named
初始值设定项的文件名。
另一方面,要从文件系统加载图像(这一次,不包含在您的应用程序中),您可以将 NSImage(contentsOfFile:)
与您的路径一起使用,或将 NSImage(contentsOfURL:)
与您的 NSURL 一起使用路径。