【发布时间】:2016-07-30 16:53:37
【问题描述】:
我在表格视图中选择一个单元格,将值传递给视图控制器,然后允许用户使用下面的代码更新 Parse 上的行(在 Heroku 上运行)。
我面临的问题是 - “标题”列已更新,但图像文件列未更新为选择的新图像。我可以看到新图像确实传递到了代码中。
我正在使用同步调用,因为除非保存记录,否则不希望用户继续前进。
有什么问题吗?保存新对象的相同代码工作正常。
谢谢 灰烬
let query = PFQuery(className:"class")
query.whereKey("objectId", containsString: passedObject.objectId)
do {
let results = try query.findObjects()
if results.count == 0 {
print("error")
success = false
} else {
//update
do {
let obj = results.first
obj!["title"] = Title.text!
let imageData = UIImageJPEGRepresentation(imageOutlet.image!,0.2)
let imageFile = PFFile(name: "image.png", data: imageData!)
//try imageFile?.save() // is this needed?
obj!["imagefile"] = imageFile
try obj!.save()
self.success = true
} catch let er as NSError {
print(" error while updating - \(er)")
}
}
} catch {
print("error while querying \(error)")
success = false
}
【问题讨论】:
-
能否请您对文件执行 save() 函数,看看是否有结果?我还注意到你正在对服务器执行同步调用,这会卡住你的主线程,你可以通过调用 saveInBackground 在后台线程上执行它而不是保存
-
我确实在文件上运行了 save() ,但这也没有用。我在使用 unwind segue 时故意进行同步调用,所以如果我使用 saveInBackground,那么线程将在保存完成之前返回,这是我不想要的。
-
您能否粘贴您的 imageOutlet 定义的代码?
-
@IBOutlet 弱 var imageOutlet: UIImageView!
-
您好,请您执行以下操作: let imageData = UIImageJPEGRepresentation(imageOutlet.image,0.2) let imageFile = PFFile(name: "image.png", data: imageData) 只需删除 !在这两行中
标签: swift parse-platform ios9 xcode7.3