Swift - UIImage过滤器触发异常

时间:2015-12-06 12:49:02

标签: ios swift nsunknownkeyexception

我遵循了有助于创建QR码的在线教程。我的目标是创建的QR代码将作为文件存储在Parse DB中,并作为UIImage存储在userObject中。当我在下面运行我的代码时,它触发了以下错误:

  

2015-12-06 12:43:45.994 Mawq [7246:279805] ***终止应用程序   未被捕获的异常' NSUnknownKeyException',原因:   ' [setValue:forUndefinedKey:]:this   class不是键值input-image的键值编码。'

创建我使用的QR码的代码是:

print("1")
let data = userObject.username!.dataUsingEncoding(NSISOLatin1StringEncoding, allowLossyConversion: false)
print("2")
let filter = CIFilter(name: "CIQRCodeGenerator")
print("3")
filter!.setValue(data, forKey: "QRImage")
print("4")
let newQRImage = UIImage(CIImage: filter!.outputImage!);
print("5")
user["qrCode"] = newQRImage;
print("6")
userObject.userQRCode = newQRImage;
print("7")

print语句只是知道错误的触发位置。显然如控制台所示,它是在第3行打印后出错。我遵循的教程是:http://www.appcoda.com/qr-code-generator-tutorial/

我想要存储图像的userObject如下:

public class UserClass {

    var name: String?
    var email: String?
    var password: String?
    var mobile: String?
    var username: String?
    var tempToken: Int?
    var userQRCode: UIImage?
}

这是我第一次使用UIKit来实现这一结果......所以任何帮助都表示赞赏。

由于

1 个答案:

答案 0 :(得分:2)

只需使用教程中使用的相同代码:

filter!.setValue(data, forKey: "inputMessage")

data保存您想要保存的QR码图像的数据。例如用户名:

let data = userObject.username!.dataUsingEncoding(NSISOLatin1StringEncoding, allowLossyConversion: false)

这就是你要做的一切。 不要更改密钥。

此处用于设置过滤器的不同值的内容称为键值编码,您可以为特定键输入任意值。过滤器比读取某些键的值并解释和评估它们。这组键是固定的。过滤器需要inputMessage。但是,过滤器期望传递QRImage