我遵循了有助于创建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来实现这一结果......所以任何帮助都表示赞赏。
由于
答案 0 :(得分:2)
只需使用教程中使用的相同代码:
filter!.setValue(data, forKey: "inputMessage")
而data
保存您想要保存的QR码图像的数据。例如用户名:
let data = userObject.username!.dataUsingEncoding(NSISOLatin1StringEncoding, allowLossyConversion: false)
这就是你要做的一切。 不要更改密钥。
此处用于设置过滤器的不同值的内容称为键值编码,您可以为特定键输入任意值。过滤器比读取某些键的值并解释和评估它们。这组键是固定的。过滤器需要inputMessage
。但是,过滤器不期望传递QRImage
。