【发布时间】:2016-12-01 04:45:20
【问题描述】:
在我问这个问题之前,我已经搜索了相关帖子:
"unrecognized selector" when attempting to access CIFilter's outputImage
我不知道是因为使用swift还是extension,我会得到error。我测试了两个methods 以获得CIImage,但在EXC_BAD_INSTRUCTION 中失败:
注意
我的url不是http://前缀,而是weixin://wxpay/bizpayurl?pr=ZwBVaW0,我认为这不是错误的原因。
-
方法一:
扩展字符串{
func initQRImage() ->UIImage { let filter:CIFilter = CIFilter.init(name: "CIQRCodeGenerator")! filter.setDefaults() let data:Data = self.data(using: String.Encoding.utf8)! filter.setValue(data, forKey: "inputMessage") let outputImage:CGImage = filter.outputImage as! CGImage // EXC_BAD_INSTRUCTION here let qr_image = UIImage.init(cgImage: outputImage) return qr_image }}
-
方法二:
扩展字符串{
func initQRImage() ->UIImage { let url:URL = URL.init(fileURLWithPath: self) let inputImage:CIImage = CIImage.init(contentsOf: url)! // EXC_BAD_INSTRUCTION here let filter: CIFilter = CIFilter.init(name: "CIAreaAverage")! filter.setValue(inputImage, forKey: kCIInputImageKey) let inputExtent:CGRect = inputImage.extent let extent:CIVector = CIVector.init(x: inputExtent.origin.x, y: inputExtent.origin.y, z: inputExtent.size.width, w: inputExtent.size.height) filter.setValue(extent, forKey: kCIInputExtentKey) let outputImage:CIImage = filter.value(forKey: "outputImage") as! CIImage let qr_image = UIImage.init(cgImage: outputImage as! CGImage) return qr_image }}
这里有两种方法会报EXC_BAD_INSTRUCTION错误,可以看到我在报错行后面写的annotation 。
编辑 - 1
我在我的项目中再次尝试过,没有使用extension,也有error,而data不是nil:
【问题讨论】: