使用SWIFT同步键值信息的简便方法

时间:2016-03-02 14:17:40

标签: ios swift synchronization cloudkit

我正在处理iOS应用程序的更新,用户可以看到不同的视频,所以我也希望尽快添加tvOS版本。

我想添加一种方法来同步" 观看" VideoObject的状态。 我的VideoObject确实有一个VideoObject.id,我会添加一个VideoObject.watched_status作为Bool现在我有不同的想法如何保存这些信息,也可能在tvOS上使用它们。

  1. Firebase - 这需要用户创建一个login / me来生成userkey,他可以与其他设备同步(输入{{1}在其他设备上),否则信息只能在一台设备上使用。

  2. NSUserDefaults - 也许是最简单的方法,但不是很灵活。也没有简单的同步可用

  3. CloudKit - CloudKit可用于存储这些信息(privat)并自动将这些信息同步到其他设备。

  4. JSON - 我可以创建一个在CloudKit / externalServer中存储为文件的JSON文件

  5. 还有其他方法可以实现这样的目标吗?没有建立自己的后端?
    你会优先考虑其中一种方式(目前我认为CloudKit会是最好的吗?),如果这样,那么简短的原因会对我有所帮助。

1 个答案:

答案 0 :(得分:1)

从我的观点来看,这取决于同步的最终目标,如果您想同步简单数据,那么使用 CloudKit 是非常简单可靠的方法,因为API很简单以及将展示如何在所有Apple设备上使用同步的文档。

这个link包含很好的教程,展示了如何正确处理 CloudKit

如果您想拥有包含大量高度可自定义数据的非常复杂的解决方案,您应该使用自己的服务器来处理同步。

NSUserDefaults 由于该类的目的,它不是在设备之间同步数据的最佳方式。但是,如果你想使用小修补程序来保存被观看的视频,那么这个例子适合你:

NSUserDefaults.standardUserDefaults().setObject(Bool(false), forKey:"videoIsWached")

var onoroff = NSUserDefaults.standardUserDefaults().objectForKey("videoIsWached") as Bool!

JSON 文件非常古老,但它不如 NSUserDefaults CloudKit 那么灵活。

还要考虑使用数据库框架,例如 CoreData Realm ,这是存储可以通过REST服务与其他设备同步的本地更改的好方法。

由于缺少后端和与多台Apple设备同步的选项,因此使用 CloudKit 非常合适。