【问题标题】:How to save images to Parse?如何将图像保存到 Parse?
【发布时间】:2015-08-15 15:23:15
【问题描述】:

由于某种奇怪的原因,我的图像已停止保存以进行解析。之前,我的代码运行良好,我根本没有对其进行任何更改。

这是我的代码:

 var posts = PFObject(className: "Product")
            posts["shortDescription"] = productShortDescription
            posts["user"] = PFUser.currentUser()
            posts["longDescription"] = productLongDescription
            posts["title"] = productTitle
            posts["price"] = productPrice
            posts.saveInBackgroundWithBlock({
                (success: Bool, error: NSError?) -> Void in

                if error == nil {
                    //success saving, now save image

                    //create image data

                    var imageData = UIImagePNGRepresentation(self.newItemImageView.image)


                    //create parse file

                    var parseImageFile = PFFile(name: "upload_image.png", data: imageData)
                    posts["imagePNG"] = parseImageFile
                    posts.saveInBackgroundWithBlock({
                        (success: Bool, error: NSError?) -> Void in

                        if error == nil {
                            // take user home
                            println("data uploaded")
                            self.performSegueWithIdentifier("returnHomeAfterUpload", sender: self)
                        }else {
                            println(error)

                        }


                    })

                }else {

                    println(error)
                }

            })

其他所有内容都完美存储,但我的图像数据有什么问题? 谢谢!

【问题讨论】:

  • 你没有保存 parseImageFile 你需要保存它
  • 如果您停止学习 Swift 并改用 ObjC,然后将所有教程与 Parse 一起使用,并拥有一个可以执行此操作并且可以正常工作的应用程序,这将为您节省大约几个小时在大约 4 小时内。 Parse 明确表示他们对支持 Swift 没有太大兴趣,我同意,7 年的 ObjC 历史,现在不知何故 Swift 更容易,但它需要对 Apple 的知识,所以不是刻薄,但现实是这:如果您使用 ObjC,那么您的生活会更轻松,鉴于那里有多少信息,学习并不难。
  • 观看 parse 的这个视频,他们解释了为什么他们现在不“支持”全油门模式:blog.parse.com/categories/videos 专门观看这个视频“询问 Parse 任何东西 - 六月版就在这里!”跨度>
  • 我两个月前才开始编码。我计划在那里学习大多数语言。但我认为,由于 Swift 对 Apple 来说是新的,它最终将成为开发 Apple 产品的主要语言。 Apple 让一切都过时,为新事物让路。

标签: ios swift parse-platform


【解决方案1】:

在您的代码中,您没有保存parseImageFile,因此首先将parseImageFile.SaveInBackground 设置为posts,然后再保存posts

应该是这样的

         var posts = PFObject(className: "Product")
                posts["shortDescription"] = productShortDescription
                posts["user"] = PFUser.currentUser()
                posts["longDescription"] = productLongDescription
                posts["title"] = productTitle
                posts["price"] = productPrice
                posts.saveInBackgroundWithBlock({
                    (success: Bool, error: NSError?) -> Void in

                    if error == nil {
                        //success saving, now save image
                        //create image data
                        var imageData = UIImagePNGRepresentation(self.newItemImageView.image)                            
                        //create parse file
                        var parseImageFile = PFFile(name: "upload_image.png", data: imageData)
parseImageFile.saveInBackgroundWithBlock({
posts["imagePNG"] = parseImageFile
                        posts.saveInBackgroundWithBlock({
                            (success: Bool, error: NSError?) -> Void in

                            if error == nil {
                                // take user home
                                println("data uploaded")
                                self.performSegueWithIdentifier("returnHomeAfterUpload", sender: self)
                            }else {
                                println(error)

                            }


                        })
})


                    }else {

                        println(error)
                    }

                })

我没有在编辑器上测试过这段代码,你可能会发现一些语法错误,但它应该是这样的......

所以事情是当你创建 parseImageFile 然后 saveInBackground 和内部块设置它的帖子,然后再次保存帖子

【讨论】:

  • 我明白你在说什么。这说得通。但我无法理解这种格式。我应该补充一点,我是移动开发新手。
  • 后台帖子保存在哪里?
  • 我已经更新了代码,你的代码应该是这样的,我没有在编辑器上测试你可能会修复一些语法问题...
  • PFObject 保存所有相关对象,PFFile 也不例外
【解决方案2】:

我检查了您的代码,它运行良好。

        let image = UIImage(named: "img.jpg")
        let data = UIImagePNGRepresentation(image)
        let file = PFFile(name: "img", data: data)

        let parseObj = PFObject(className: "testClass")
        parseObj["text"] = "hello"
        parseObj["image"] = file

        parseObj.saveInBackgroundWithBlock { (_, _) -> Void in }

试试这个,如果这个代码可以工作 - 最简单的方法是删除“产品”表并重新创建它。

【讨论】:

  • 我不断测试我的代码,但由于某种原因,我的相机拍摄的图像没有保存以进行解析。任何想法为什么?
  • 我的代码工作正常,就像你说的那样。截图发布没有问题。
  • 你能不能给我看一下字段的截图。是(未定义)吗?
  • 我还可以发照片,我的声望不够高。但是,是的,该字段显示未定义,并且由于 nil 值,我的 tableview 没有加载。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-14
相关资源
最近更新 更多