我一直在寻找 iCloud 的替代方案来进行核心数据同步,一个有希望的选择是TICoreDataSync(代码可以在这里找到)。有没有将其修改为在自己的网络服务器上工作的示例,而不是将同步文件上传到 Dropbox?设置 TICoreDataSync 的最佳方式是什么?
3 回答
您应该查看描述预期内容的远程文件层次结构页面。它似乎期望一个“哑”文件系统,它只需要对指定位置的读/写访问。它与仅存储二进制文件的 Dropbox 一起使用这一事实进一步证明了这一点。这种类型的服务可以以许多不同的方式实现,除了定义的层次结构之外,它们不依赖于 TICoreDataSync。您只需要一个允许对定义的路径进行标准读/写访问的服务器。要问的重要问题是如何将 TICoreDataSync 指向特定端点?答案似乎是通过初始化TICDSFileManagerBasedApplicationSyncManager并设置applicationContainingDirectoryLocation
财产。从这里的文档中模糊不清的一件事是它没有说明这是否必须是本地目录的 URL。理论上它是一个 NSURL 并且可以设置为一个 HTTP URL 假设 HTTP 服务器正确处理 I/O 方法。
这是我开始在您自己的服务器上存储信息的地方。根据您的问题标签,您似乎正在构建一个 iOS 应用程序,不幸的是,他们的文档只讨论了将 DropboxSDK 与 iOS 应用程序和相应的TICDSDropboxSDKBasedApplicationSyncManager
类一起使用。如果您正在构建 Mac 应用程序,服务器组件可能对您的应用程序是透明的。您可以写入从服务器挂载的本地目录,无论是 WebDav、SMB、SSH 等...并使用TICDSFileManagerBasedApplicationSyncManager
该类。
综上所述,您可能对其他一些方法感兴趣。如果您对本土解决方案感兴趣,可以查看我编写的这些教程。
如何将核心数据与 Web 服务同步 - 第 1 部分 如何将核心数据与 Web 服务同步 - 第 2 部分
为了使教程生产中的应用程序有价值,还有很多工作要做,但它可能是有见地的。
另一个选项是AFIncrementalStore,它提供 CoreData 和您的 Web 服务后端之间的无缝通信。
无论如何,像这样同步数据是一项相当大的任务,因此请准备好花费大量时间进行开发以使其正确!
你看过AFIncrementalStore吗?这个Heroku 介绍视频讲述了设置 iOS 应用程序是多么容易,并且托管对于低于生产级别的数据访问和存储是免费的。可能是值得研究的事情。
Chris 是正确的,因为 TICoreDataSync 只需要一个您可以访问的普通分层文件系统。虽然我们没有在其他服务(iCloud 功能分支除外)上使用 TICDS 的任何其他示例,但您希望首先查看 subclassing TICDSApplicationSyncManager
、TICDSDocumentSyncManager
和位于Generic Operations
组中的 NSOperations。您可以在项目 wiki 上的更新文档中阅读更多相关信息:https ://github.com/nothirst/TICoreDataSync/wiki/Extending-the-Framework
更具体地说,假设您想通过 Amazon S3 实例进行同步。您将创建TICDSAmazonS3ApplicationSyncManager
和TICDSAmazonS3DocumentSyncManager
类。然后,在注册同步管理器时,您将使用这些特定的子类。需要记住的重要一点是,这些特定于服务的子类只需要实现框架的通信层,所有同步逻辑都在超类中处理。此外,通信点定义明确。
我们最近在项目 wiki 上发布了框架的 1.0.2 版以及更新的文档、示例应用程序和教程。检查一下,如果遇到任何问题,请在项目的问题页面上打开一个问题