【问题标题】:TICoreDataSync connecting to web server backend?TICoreDataSync 连接到 Web 服务器后端?
【发布时间】:2012-12-27 07:39:24
【问题描述】:
【问题讨论】:
-
当使用自己的服务器时,我更喜欢使用TouchDB 并构建自己的同步控制器。我尝试使用 TICoreDataSync 但我放弃了 - 我已经使用 Dropbox 构建了自己的同步。
标签:
ios
core-data
sync
icloud
ticoredatasync
【解决方案1】:
您应该查看描述预期内容的Remote File Hierarchy 页面。它似乎期望一个“哑”文件系统,它只需要对指定位置的读/写访问。它与仅存储二进制文件的 Dropbox 一起使用这一事实进一步证明了这一点。这种类型的服务可以以许多不同的方式实现,除了定义的层次结构之外,它们不依赖于 TICoreDataSync。您只需要一个允许对定义的路径进行标准读/写访问的服务器。要问的重要问题是如何将 TICoreDataSync 指向特定端点?答案似乎是初始化TICDSFileManagerBasedApplicationSyncManager 并设置applicationContainingDirectoryLocation 属性。从这里的文档中模糊不清的一件事是它没有说明这是否必须是本地目录的 URL。理论上它是一个 NSURL 并且可以设置为一个 HTTP URL 假设 HTTP 服务器正确处理 I/O 方法。
这是我开始在您自己的服务器上存储信息的地方。根据您的问题标签,您似乎正在构建一个 iOS 应用程序,不幸的是,他们的文档只讨论了将 DropboxSDK 与 iOS 应用程序和相应的 TICDSDropboxSDKBasedApplicationSyncManager 类一起使用。如果您正在构建 Mac 应用程序,服务器组件可能对您的应用程序是透明的。您可以写入从服务器挂载的本地目录,无论是 WebDav、SMB、SSH 等...并使用 TICDSFileManagerBasedApplicationSyncManager 类。
说了这么多,您可能对其他一些方法感兴趣。如果您对自制解决方案感兴趣,可以查看我编写的这些教程。
How To Synchronize Core Data with a Web Service – Part 1
How To Synchronize Core Data with a Web Service – Part 2
为了使教程生产中的应用程序有价值,还有很多工作要做,但它可能是有见地的。
另一个选项是AFIncrementalStore,它提供CoreData 和您的Web 服务后端之间的无缝通信。
无论如何,像这样同步数据是一项非常艰巨的任务,因此请准备好花费大量时间进行开发以使其正确!
【解决方案3】:
Chris 是正确的,因为 TICoreDataSync 只需要一个您可以访问的普通分层文件系统。虽然我们没有在其他服务(iCloud 功能分支除外)上使用 TICDS 的任何其他示例,但您希望首先查看子类化 TICDSApplicationSyncManager、TICDSDocumentSyncManager 和位于 @987654325 中的 NSOperations @ 团体。您可以在项目 wiki 上的更新文档中阅读更多相关信息:https://github.com/nothirst/TICoreDataSync/wiki/Extending-the-Framework
更具体地说,假设您想通过 Amazon S3 实例进行同步。您将创建 TICDSAmazonS3ApplicationSyncManager 和 TICDSAmazonS3DocumentSyncManager 类。然后,在注册同步管理器时,您将使用这些特定的子类。需要记住的重要一点是,这些特定于服务的子类只需要实现框架的通信层,所有的同步逻辑都在超类中处理。此外,通信点定义明确。
我们最近在项目 wiki 上发布了框架的 1.0.2 版以及更新的文档、示例应用程序和教程。检查一下,如果遇到任何问题,请在项目的 Issues 页面上打开一个问题