Simperium错误:无法区分日期,因为它们的类不是NSDate

时间:2013-03-26 13:40:34

标签: ios core-data simperium

这是我第一次尝试将Simperium集成到我的一个iOS核心数据项目中。虽然初始同步效果很好。我在以后的阶段看到了大量的崩溃事件,并带有以下日志。

  

2013-03-26 18:40:08.460 APP [2468:ae03] * ** 断言失败 - [SPMemberDate diff:otherValue:],/ path /to/simperium-ios-develop/Simperium/SPMemberDate.m:48

     

2013-03-26 18:40:08.465 APP [2468:ae03] * ** 由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'Simperium错误:无法区分日期,因为它们的类不是NSDate'

打印[thisValue class]&的结果占用SPMemberDate.m第48行的方法中的[otherValue class]表明,此值在某一点上,此值为__NSDate对象,而其他值为__NSCFNumber对象。

罪魁祸首对象的值始终如下: -

1970-01-01 00:00:00 +0000

thisValue

0

otherValue

我不知道在哪里可以看到旁边的尝试&调试此问题。什么可以返回NSNumber而不是NSDate?什么可以回到70年代的约会?我很公开,在我的代码中没什么。任何帮助都会很好。

2 个答案:

答案 0 :(得分:0)

自1970年以来,你将这个数字作为时间间隔,

您可以通过以下方式将其转换为日期:

// The time interval 
NSTimeInterval theTimeInterval = ...;
// Get the system calendar
NSCalendar *sysCalendar = [NSCalendar currentCalendar];

// Create the NSDates
NSDate *date1 = [[NSDate alloc] init];
NSDate *date2 = [[NSDate alloc] initWithTimeInterval:theTimeInterval sinceDate:date1]; 

答案 1 :(得分:0)

您是仅在iOS设备之间同步,还是同步到网络应用或后端服务?日期值当前作为号码在线上传输(自1970年以来的秒数),因此如果您从非iOS设备向Simperium发送日期,则需要使用该格式。

Simperium iOS库应该处理iOS上的NSDate转换。它是开源的,所以你可以尝试下载它并进一步挖掘以查看可能出现的问题: https://github.com/Simperium/simperium-ios