-3

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

2015-12-06 12:43:45.994 Mawq [7246:279805] *** 由于未捕获的异常“NSUnknownKeyException”而终止应用程序,原因:“[setValue:forUndefinedKey:]:此类不符合键值编码键输入图像。

创建我使用的二维码的代码是:

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")

打印语句只是为了知道错误是在哪里触发的。显然,如控制台所示,在第 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 来实现这个结果......所以任何帮助表示赞赏。

谢谢

4

1 回答 1

2

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

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

whiledata保存您希望 QR 码图像保存的数据。例如用户名:

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

这就是你所要做的。请勿更改密钥。

此处用于设置过滤器的不同值的方法称为键值编码,您可以为特定键输入任意值。过滤器然后读取一些键的值并解释和评估它们。密钥集是固定的。过滤器期望 ainputMessage存在。然而,过滤器并不期望 aQRImage被传入。

于 2015-12-06T13:03:40.497 回答