0

我今天在寻找 iCloud 同步我的核心数据数据库的替代方案时偶然发现了 Simperium。

它通过数据浏览器传输数据的速度和可见性给我留下了深刻的印象,据我所知,iCloud 无法轻易提供。我遵循了 simpleToDo 示例应用程序并设法让它工作(该应用程序的 ipad 版本有一些需要修复的错误)。

在对它的工作方式感到满意后,我决定按照与示例中相同的步骤在我的应用程序中实现它。我删除了所有与 icloud 相关的代码,并通过虚拟镜像示例中提供的代码(仅对我的托管对象模型稍作改动)重新实现了应用程序委托核心数据代码。

在我的应用程序中创建记录方面似乎一切顺利,我可以看到更改已通过网站的仪表板数据浏览器工具上传。

我的问题

我已经验证数据正在从两个设备发送到服务器,但是,这些更改都没有显示在另一个设备上。

我错过了什么?我在 simpleToDo 示例的代码中找不到任何东西,这似乎表明在收到某种通知后可以调用该方法来执行表视图的更新或刷新。

此外,我看不到任何日志显示已检测到/添加到队列或下载了新记录。

我与 Simperium 相关的最后日志是:

2012-12-30 21:00:46:772 myClients[745:907] Simperium authentication success!
2012-12-30 21:00:46.781 myClients[745:907] Reachability Flag Status: -R ------- networkStatusForFlags
2012-12-30 21:00:46:782 myClients[745:907] Simperium starting network managers...
2012-12-30 21:00:49:514 myClients[745:907] Simperium finished processing index for Client

任何帮助将不胜感激,我真的很期待看到这对我有用,因为我相信这将是一个不错的选择。

4

1 回答 1

2

您可以在 Simperium 实例上启用更详细的日志记录:

simperium.verboseLoggingEnabled = YES;

这将帮助您确认每台设备上正在接收数据。正如您已经发现的那样,您应用程序的基于 Web 的数据浏览器可以帮助您确认数据是否正在发送。

除此之外,您提到的示例使用 anNSFetchedResultsController这是一个本机类,它会UITableView在 Core Data 中添加、删除和更改项目时自动更新 a。如果您以这种方式构建应用程序,则无需执行任何其他操作即可更新表格视图。

如果您需要更完整的控制,或者您有想要手动更新的 UI 元素,您可以使用SPBucketDelegate在数据更改时收到通知。您的每个实体都有一个存储桶,您可以从您的 Simperium 实例中检索该存储桶。然后你可以SPBucketDelegate在那个桶上设置:

SPBucket *bucket = [simperium bucketForName:@"Todo"];
bucket.delegate = self;

self实例现在将具有诸如bucket:didChangeObjectForKey:forChangeType:在作为 Todo 实体的任何对象更改时调用的方法。您可以在 中查看这些委托方法的完整列表SPBucket.h

于 2012-12-30T18:51:27.930 回答