我正在开发一个使用解析来存储和接收图片的应用。这些照片是在手机上拍摄的,显示在应用程序上,保存在解析中,可以通过Parse检索。我解析起来相当新,所以我不确定以下行为是否正常。当我从解析下载图片时,我使用以下代码:
if let image1File = user?["image1"] as? PFFile {
image1File.getDataInBackgroundWithBlock {
(imageData: NSData!, error: NSError!) -> Void in
if !(error != nil) {
imgOne.image = UIImage(data:imageData)
}
}
}
此代码位于viewDidLoad
,因此图片会在viewController
加载时显示。但是,当我自己手动删除图片时,而不是通过代码,图片仍然存在并将继续加载,直到我从模拟器中删除应用程序并重新加载它。这是解析/模拟器/代码问题吗?
注意:我在模拟器上测试它,而不是实际的手机
由于
答案 0 :(得分:2)
可能有几种可能的原因发生。首先,Parse将图像存储在Amazon-S3中,您实际接收的是该文件的绝对链接。删除具有文件引用属性的解析对象时,原始文件可能根本不会被删除。这就是为什么Parse毕竟有一个来自你的Parse-app功能的Clear Unused Files
。
其次,在几个级别上,出于明显的性能原因,可能会缓存图像。因此,即使删除了图像文件,它也会在多个位置持续一段时间,这可能是您遇到此问题的另一个原因。
但是,根据经验,您应该以这样的方式对逻辑进行编码:如果用户删除了特定对象,则下次根本不应该提取与该对象相关的任何内容。此外,您可以在Parse-app上使用常规cron job to clean up unused files。