这是我第一次尝试将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年代的约会?我很公开,在我的代码中没什么。任何帮助都会很好。
答案 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