2013-03-26 22 views
0

這是我第一次嘗試將Simperium集成到我的iOS核心數據項目中。雖然初始同步效果很好。在後面的日誌中我看到大量的崩潰。Simperium錯誤:無法區分日期,因爲他們的類不是NSDate

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

2013-03-26 18:40:08.465 APP[2468:ae03] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Simperium error: couldn't diff dates because their classes weren't NSDate'

印刷[thisValue class] & [otherValue class]在佔據SPMemberDate.m的線48的方法中的結果表明,在一個點上,thisValue是__NSDate對象,而otherValue是__NSCFNumber對象。

的罪魁禍首對象的值總是如下: -

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

0otherValue

我在虧損,其中下一看請嘗試&調試此問題。什麼可能會返回一個NSNumber而不是一個NSDate?而且,可能會從70年代返回一個日期?我是相當的,在我的代碼中沒有任何東西。你能幫忙的話,我會很高興。

+0

這可能是時間間隔1970年......你需要將它轉換成日期。 – 2013-03-26 13:42:37

+0

@AnoopVaidya已經作爲NSDate返回。我應該在哪裏以及如何轉換它? – 2013-03-26 14:18:59

回答

0

你只有iOS設備之間進行同步,或者是你還同步到一個Web應用程序或後端服務?日期值目前是作爲線上的數字(1970年以來的秒數)傳輸的,所以如果您從非iOS設備向Simperium發送日期,則需要使用該格式。

儘管如此,Simperium iOS庫應該可以處理從/到NSDate的轉換。它是開源的,所以你可以嘗試下載它,進一步挖掘,看看有什麼可能會出錯: https://github.com/Simperium/simperium-ios

+0

感謝Mike!已經做到了這一點我發現,我試圖同步的實體中的一個日期屬性在大多數情況下爲零,是什麼導致所有大破壞,我照顧它。 – 2013-03-30 07:10:44

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]; 
+0

發生崩潰時,返回的數字始終爲0。如果確實是1970年以來的時間間隔,那麼我想知道什麼是返回它,然後盲目地對第三方框架進行更改,因爲自1970年以來,我的代碼中沒有任何內容應該返回0時間間隔。我可能是錯的,但我懷疑這可能是Simperium框架中的一些東西。 – 2013-03-26 14:47:58

+0

然後我對此沒有太多的想法:( – 2013-03-26 14:49:12

相關問題