我一直在寻找iCloud的核心数据同步替代方案,其中一个很有前途的选择是TICoreDataSync (the code can be found here)。有没有什么例子可以将其修改为在自己的web服务器上工作,而不是将同步文件上传到Dropbox?设置TICoreDataSync的最佳方法是什么?
发布于 2013-01-22 08:12:29
您应该查看Remote File Hierarchy页面,该页面描述了预期的内容。它似乎需要一个“哑巴”文件系统,它只需要对指定位置进行读/写访问。它与Dropbox一起工作的事实进一步证明了这一点,Dropbox只存储二进制文件。这种类型的服务可以以许多不同的方式实现,除了定义的层次结构之外,这些方式不依赖于TICoreDataSync。您只需要一台允许对定义的路径进行标准读/写访问的服务器。要问的重要问题是如何将TICoreDataSync指向特定的端点?解决这个问题的方法似乎是初始化一个TICDSFileManagerBasedApplicationSyncManager并设置applicationContainingDirectoryLocation属性。这里的文档模糊不清的一点是,它没有说明这是否必须是指向本地目录的URL。从理论上讲,它是一个NSURL,假设HTTP服务器正确处理I/O方法,可以将其设置为HTTP URL。
这就是我开始在您自己的服务器上存储信息的地方。根据您对问题的标记,看起来您正在构建一个iOS应用程序,不幸的是,他们的文档只讨论了在iOS应用程序和相应的TICDSDropboxSDKBasedApplicationSyncManager类中使用DropboxSDK。如果您正在构建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服务后端之间的无缝通信。
在任何情况下,像这样的数据同步都是一项相当大的任务,所以要准备好在开发上花费大量的时间,以便让它变得正确!
发布于 2013-01-22 09:48:15
你调查过AFIncrementalStore吗?这篇Heroku introduction video讲述了为iOS应用程序设置是多么容易,并且托管对于生产级别以下的数据访问和存储是免费的。可能是一些值得调查的东西。
发布于 2013-05-15 12:03:47
Chris是正确的,TICoreDataSync只需要一个您可以访问的普通的分层文件系统。虽然我们没有通过其他服务(除了iCloud feature分支)使用TICDS的任何其他示例,但您可能希望从查看位于Generic Operations组中的TICDSApplicationSyncManager、TICDSDocumentSyncManager和NSOperations的子类化开始。您可以在项目wiki上的更新文档中了解更多信息:https://github.com/nothirst/TICoreDataSync/wiki/Extending-the-Framework
更具体地说,假设您想要通过亚马逊S3实例进行同步。您将创建TICDSAmazonS3ApplicationSyncManager和TICDSAmazonS3DocumentSyncManager类。然后,在注册同步管理器时,您将使用这些特定的子类。重要的是要记住,这些特定于服务的子类只需要实现框架的通信层,所有的同步逻辑都在超类中处理。此外,通信点被定义得很好。
我们最近发布了该框架的1.0.2版本,以及更新的文档、示例应用程序和项目wiki上的教程。查看它,如果您遇到任何问题,请在项目的Issues页面上打开一个问题
https://stackoverflow.com/questions/14299913
复制相似问题