-3

QR コードの作成に役立つオンライン チュートリアルに従いました。私の目的は、作成された QR コードがファイルとして Parse DB に保存され、UIImage として userObject にローカルに保存されることです。以下のコードを実行すると、次のエラーが発生しました。

2015-12-06 12:43:45.994 Mawq[7246:279805] *** キャッチされない例外 'NSUnknownKeyException' によりアプリを終了します。理由: '[ setValue:forUndefinedKey:]: このクラスは、キー入力画像。

私が使用した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 を使用してこの結果を達成するのはこれが初めてです。

ありがとう

4

1 に答える 1

2

チュートリアルで使用したものと同じコードを使用してください。

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

whiledataは、QR コード画像に保持するデータを保持します。たとえば、ユーザー名:

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

それはあなたがしなければならないすべてです。キーを変更しないでください。

フィルターのさまざまな値を設定するためにここで使用されるのは、キー値コーディングと呼ばれ、特定のキーに任意の値を入力します。フィルターは、いくつかのキーの値を読み取り、それらを解釈および評価します。キーのセットは固定されています。フィルタは ainputMessageが存在することを期待しています。ただし、フィルタはaが渡されることを想定していません。QRImage

于 2015-12-06T13:03:40.497 に答える