Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/102.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios PFFile中的图像将上载到parse,而不是保存到本地数据存储中_Ios_Swift_Parse Platform_Pfobject_Pffile - Fatal编程技术网

Ios PFFile中的图像将上载到parse,而不是保存到本地数据存储中

Ios PFFile中的图像将上载到parse,而不是保存到本地数据存储中,ios,swift,parse-platform,pfobject,pffile,Ios,Swift,Parse Platform,Pfobject,Pffile,我将swift与解析框架(1.6.2)一起使用。我正在将数据存储到本地数据存储中。数据由几个字符串和一个图像组成。此图像将存储在PfFile中,然后添加到PfObject中 现在我想知道为什么图像没有保存,直到我注意到我需要调用PFFile的save()方法。问题是,图像然后似乎被上传到解析,这是我不想要的。我希望它存储在本地设备上 有解决办法吗 谢谢 编辑: 代码的工作原理如下: var spot = PFObject(className: "Spot") let imageData = UI

我将swift与解析框架(1.6.2)一起使用。我正在将数据存储到本地数据存储中。数据由几个字符串和一个图像组成。此图像将存储在PfFile中,然后添加到PfObject中

现在我想知道为什么图像没有保存,直到我注意到我需要调用PFFile的save()方法。问题是,图像然后似乎被上传到解析,这是我不想要的。我希望它存储在本地设备上

有解决办法吗

谢谢

编辑:

代码的工作原理如下:

var spot = PFObject(className: "Spot")
let imageData = UIImageJPEGRepresentation(spotModel.getPhoto(), 0.05)
let imageFile = PFFile(name:"image.jpg", data:imageData)

spotObj.setObject(spotModel.getCategory(), forKey: "category")
spotObj.setObject(imageFile, forKey: "photo")


//if I simply would do this, the PFObject will be saved into the local datastorage, but the image won't be saved
spotObj.pin()

//if I do this, the image will be saved also BUT it won't be saved into the local data storage but will be uploaded to parse
imageFile.save()
spotObj.pin()
好的,看看这里。 有一点是肯定的,如果您在PFFile上调用save,它将保存到在线数据存储。所以应该使用PFFile.save()。我认为你最好的选择是将文件保存在某个文件夹中。本地并将该路径保存在PFObject中。解析文档只需这样说

"Pinning a PFObject is recursive, just like saving, so any objects that are pointed to by the one you are pinning will also be pinned. When an object is pinned, every time you update it by fetching or saving new data, the copy in the local datastore will be updated automatically. You don't need to worry about it at all."
它对主对象中的其他对象递归调用.pin()。但如果您查看一下,它没有.pin(),这意味着它不支持将PFFile保存到本地数据存储。所以我想说,您应该将它们保存在某个目录中,并将路径保存在PFObject中

更新

save:

Saves the file synchronously and sets an error if it occurs.

- (BOOL)save:(NSError **)error
Parameters
error
Pointer to an NSError that will be set if necessary.

Return Value
Returns whether the save succeeded.

当您将图像保存在PFFile中,并将其附加到PFObject时,它将自动上载以进行解析。您可以做的是,在本地存储图像并获取图像的路径。将路径作为字符串附加到PFObject。保存PFObject。完成!!!!当您要将PFObject向后拉时,您将拥有它的路径。您还可以保存it核心数据。本地存储取决于您的需要。:)我真的不明白。(新的)本地数据存储实际上是用来离线存储数据的。我存储到本地数据存储中的所有内容都不会上传,直到我告诉parse这样做(使用SaveFinally),所以我不明白为什么添加图像会有所不同?您是否调用了PFObject上的save?请参阅我提供的示例代码added@Christian我完全同意这是荒谬的。如果我不能在本地数据存储中存储数据,那它有什么用呢?这太糟糕了。我不明白他们为什么不增加这个功能。我的意思是,在docu中没有任何地方可以将图像“静默”保存到服务器上……解析本地数据存储真的很新。实际上,您无法对带有PFFile的PFObject调用PFObject savefinally()。请记住,“保存”将始终尝试保存在在线数据存储中。这就是为什么他们提出了一个新术语“pin”来在本地保存它的原因。我希望在每个主要使用的对象(如PfFile和PFObject)中至少有一个pin方法。“我的意思是说:是的,你可以在本地存储数据,只要它们不是二进制的吗?”Christian我回答了另一个关于这个问题的问题,我的提问者在这里指导我,我觉得原因是因为PFFiles被缓存有很多原因,所以将已经缓存的文件固定到本地磁盘是多余的。我的建议是利用他们的缓存策略
kPFCachePolicyCacheThenNetwork
在需要的地方另一个我已经改变了应用程序的行为,现在将文件存储在本地只需将文件路径保存在PFObject中。这工作非常顺利,比使用Parse执行此操作要快得多