在 iOS 设备上本地保存解析对象

Posted

技术标签:

【中文标题】在 iOS 设备上本地保存解析对象【英文标题】:Saving parse objects locally on iOS device 【发布时间】:2014-06-22 01:26:30 【问题描述】:

在本地保存解析对象的正确方法是什么?我将它们放在 NSMutableDictionary 中并尝试使用 NSUserDefaults 保存它们,但失败并出现此错误,“尝试将非属性列表对象设置为 NSUserDefaults 值”。

我想将我的对象上传到 Parse 并保存在本地。有点像缓存它。我知道 parse 提供查询缓存,但我也需要在上传时缓存,而不仅仅是在查询时。

如果有区别,我的 pfobject 中的项目是字符串和 piffles(图像)。

如果有人能指出我正确的方向,我将不胜感激。

【问题讨论】:

【参考方案1】:

parse 已于 12 月 9 日为 ios 添加了此功能 http://blog.parse.com/2014/12/09/parse-local-datastore-for-ios/

【讨论】:

一个问题,我们可以使用 parse 只在本地存储数据吗? 我猜是的,但我不知道怎么做!此外,parse 现在是开源的,我们可以用它做任何事情【参考方案2】:

只有属性列表可以保存到NSUserDefaults。属性列表类型如下:NSArrayNSDictionaryNSStringNSDataNSDateNSNumber(参见property lists description)。

如果某些类符合NSCoding 协议,则可以将其序列化为NSData,从而保存到NSUsedDefaults(例如参见Storing NSColor in User Defaults 文章)。

但是PFObject类不符合NSCoding协议,所以没有办法将其序列化为NSData并保存到用户默认值。

但是,据我了解,您可以create NSDictionary from PFObject;您可以将NSDictionary 保存为NSUserDefaults,然后从保存的NSDictionary 中恢复PFObject

【讨论】:

一个问题,我们可以使用 parse 只在本地存储数据吗?【参考方案3】:

目前没有合适的方法来执行此操作。本地数据存储已于 2014 年 4 月 30 日添加到 android 中,并且很快就会在 iOS 上推出。

你不应该这样做,因为它肯定会在新的 SDK 发布后中断,但在那之前我确实找到了一个 hacky 方法来做到这一点......https://gist.github.com/gfosco/ac6b5ebb42791ced0932

【讨论】:

一个问题,我们可以使用 parse 只在本地存储数据吗? 你可以...这是我认为非常酷的事情之一,使用 LDS 使仅离线应用程序变得更容易。

以上是关于在 iOS 设备上本地保存解析对象的主要内容,如果未能解决你的问题,请参考以下文章

本地保存数据(IOS)

iOS-Parse.com 将多个设备与本地数据存储同步

iOS 可以在本地保存的最大数据大小

Xamarin 表单视频缩略图:尝试在 IOS 13.1.3 设备上创建视频缩略图表单本地存储时出错

在 Android 设备上保存解析安装记录时未经授权

iOS 13 UserDefaults:在某些设备上启动时应用程序崩溃