需要帮助添加名称到qrcode所以我可以保存解析

时间:2015-12-08 22:20:28

标签: parse-platform swift2

我无法弄清楚为什么我会收到此错误。 这是更新访客(参与者)的功能。我试图将我创建的Qr代码保存到PFFile并保存到解析。

func update() {
   _ = LabelText

    let query = PFQuery(className: "Participant")
    query.getObjectInBackgroundWithId(LabelText) {
        (Update: PFObject?, error: NSError?) -> Void in
    Update!["firstname"] = self.firstnameTF!.text
    Update!["lastname"] = self.lastnameTF!.text
    Update!["grade"] = self.gradeTF!.text
    Update!["teacher"] = self.teacherTF.text
    Update!["email"] = self.emailTF.text
    Update!["phone"] = self.phoneTF.text
    Update!["transportation"] = self.transportationTF.text

    Update!.saveInBackground()
    print("updated")
        if self.QrImage == nil {
            print("Image is Blank")
            return
        }else{
            //Image is not blank

        let imageData = UIImageJPEGRepresentation(self.QrImage!, 1)
        let parseImageFile = PFFile(data: imageData!)
        Update!.setObject(parseImageFile!, forKey: "qrcode")

        Update!.saveInBackgroundWithBlock( {
            (success: Bool , error: NSError?) -> Void in
        })
        }
    self.dismissViewControllerAnimated(true, completion: {});

    }
}

我可以在self.QrImage字段中看到图像,我只得到错误:
    让parseImageFile = PFFile(data:imageData!)

为什么我在那里有值时会出现nil错误?

编辑1:

        let imageData = UIImagePNGRepresentation(self.QrImage!)
        let parseImageFile = PFFile(data: imageData!)
        Update!.setObject(parseImageFile!, forKey: "qrcode")

        Update!.saveInBackgroundWithBlock( {
            (success: Bool , error: NSError?) -> Void in
        })
        }

相同的结果。"致命错误:在展开可选值时意外发现nil"

编辑2:

因此,在将图像上传到解析之前,似乎必须存在与图像关联的名称值。我的图像是我从其他数据创建的Qrcode。这是我的代码:

    func displayQrCode() {
    print(self.qrdata.text)
    let data =      self.qrdata.text!.dataUsingEncoding(NSISOLatin1StringEncoding)

    let filter = CIFilter(name: "CIQRCodeGenerator")

    filter!.setValue(data, forKey: "inputMessage")
    filter!.setValue("Q", forKey: "inputCorrectionLevel")
    self.qrcodeImage = filter!.outputImage!

    let scaleX = qrCode.frame.size.width / qrcodeImage!.extent.size.width
    let scaleY = qrCode.frame.size.height / qrcodeImage!.extent.size.height

    let transformedImage = qrcodeImage!.imageByApplyingTransform(CGAffineTransformMakeScale(scaleX, scaleY))

    self.qrCode.image = UIImage(CIImage: transformedImage)

    print("QRCode Made")
}

现在我想我需要为self.qrCode.image添加名称?

1 个答案:

答案 0 :(得分:1)

这是在使用UIImagePNGRepresentation之前需要做的事情:

self.QrImage = UIImage(named: "qrcode.png")