我正在开发一个使用解析来存储和接收图片的应用程序。图片在手机上拍摄,在app上显示,保存在parse中,可以通过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
加载时显示。但是,当我自己手动从解析中删除图片时,而不是通过代码,图片仍然存在并将继续加载,直到我从模拟器中删除应用程序并重新加载它。这是解析/模拟器/代码问题吗?
注意:我是在模拟器上测试的,不是真机
谢谢
最佳答案
发生这种情况可能有多种原因。首先,Parse 将图像存储在 Amazon-S3 中,您实际上收到的是指向该文件的绝对链接。当您删除具有文件引用属性的解析对象时,原始文件可能根本不会被删除。这就是为什么 Parse 在你的 Parse-app 功能中有一个 Clear Unused Files
的原因。
其次,出于明显的性能原因,可能会在多个级别缓存图像。因此,即使图像文件被删除,它也会在多个位置保留一段时间,这可能是您遇到此问题的另一个原因。
但是,根据经验,您应该以这样一种方式编写逻辑:如果用户删除了某个特定对象,您下次根本不应拉取与该对象相关的任何内容。此外,您可以使用常规 cron job to clean up unused files在你的 Parse-app 上。
关于ios - 从解析后端删除后解析图像文件在应用程序中持久存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32470061/