可以在 NSUserDefaults 中保留 HKQueryAnchor 吗?

Possible to persist HKQueryAnchor in NSUserDefaults?

所以我有点沮丧,Apple 已经用 HKQueryAnchor 替换了透明、易于处理的 NSUInteger,但没有提供一种简单的方法来坚持 HKQueryAnchor.有没有人找到使用 NSUserDefaults 执行此操作的好方法?我见过的唯一持久化方法是 archiver to a local file,但我的应用程序将所有内容都持久化在 NSUserDefaults 中,如果可能,我希望保持这种方式。有没有一种可靠的方法来以这种方式存储 HKQueryAnchor

您可以使用 NSKeyedArchiver 将其转换为 NSData 并将其存储在用户默认值中。

要存储:

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

检索:

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