2015-12-17 31 views
3

所以我有點沮喪,蘋果已經用HKQueryAnchor取代了一個透明,易於操作的NSUInteger,但是還沒有提供一個簡單的方法來保存HKQueryAnchor。有沒有人找到一個好方法來做到這一點NSUserDefaults?我看到的唯一持久性方法是archiver to a local file,但我的應用堅持一切在NSUserDefaults,我想盡可能保持這種方式。有沒有一種可靠的方式來存儲HKQueryAnchor這種方式?可能在NSUserDefaults中保留HKQueryAnchor?

+0

是的,你的類必須符合'NSCoding'協議,那麼你可以隨時隨地存檔或將其解壓縮。 – holex

回答

6

您可以使用NSKeyedArchiver將其轉換爲NSData並將其存儲在用戶默認值中。

要存儲:

NSData *data = [NSKeyedArchiver archivedDataWithRootObject:anchor]; 
[[NSUserDefaults standardUserDefaults] setObject:data forKey:@"AnchorData"]; 

要檢索:

NSData *data = [[NSUserDefaults standardUserDefaults] objectForKey:@"AnchorData"]; 
HKQueryAnchor *anchor = [NSKeyedUnarchiver unarchiveObjectWithData:data]; 
+0

可能你知道'HKQueryAnchor'類基本上不符合'NSCoding'協議... – holex

+0

@holex,所以它似乎符合NSSecureCoding。所以我可以實際上存檔如上並存儲在NSUserDefaults或做一些關於NSSecureCoding禁止NSUserDefaults? – helloB

+0

@helloB,那是對的,我錯過了。 – holex

相關問題