Watch OS 2 - 如何在 Watch 上存储完全原生应用程序的数据?
Watch OS 2 - How store data on Watch for fully native app?
我需要在 WatchKit Extension - Watch side Only 上存储大约 5 个变量。该应用程序将完全原生,不会向 iPhone 传递任何信息。如果手表重新启动,我需要数据保持不变。该应用程序当前在重新启动时重置为默认变量状态。我不确定该用什么。我在网上找到了有关使用 watch keychain 存储键值数据对 (username/password) 的信息,但我认为这不是我应该在这里使用的信息。感谢一些帮助。
watchOS 2 可以访问 CoreData、NSCoding 和 NSUserDefaults。取决于您要存储的数据,但这些是最好的(第一方)选项。
如果您要使用 NSUserDefaults,请不要使用 standardUserDefaults
您应该使用 initWithSuiteName:
并传入您的应用程序组的名称。
您甚至可以在 NSUserDefaults 上创建一个 category/extension 以简化此过程。
Objective-C
@interface NSUserDefaults (AppGroup)
+ (instancetype)appGroupDefaults;
@end
@implementation NSUserDefaults (AppGroup)
+ (instancetype)appGroupDefaults {
static NSUserDefaults *appGroupDefaults = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
appGroupDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"com.whatever.yourappgroupname"];
});
return appGroupDefaults;
}
@end
Swift
private var _appGroupDefaults = NSUserDefaults(suiteName: "com.whatever.yourappgroupname")!
extension NSUserDefaults {
public func appGroupDefaults() -> NSUserDefaults {
return _appGroupDefaults
}
}
我需要在 WatchKit Extension - Watch side Only 上存储大约 5 个变量。该应用程序将完全原生,不会向 iPhone 传递任何信息。如果手表重新启动,我需要数据保持不变。该应用程序当前在重新启动时重置为默认变量状态。我不确定该用什么。我在网上找到了有关使用 watch keychain 存储键值数据对 (username/password) 的信息,但我认为这不是我应该在这里使用的信息。感谢一些帮助。
watchOS 2 可以访问 CoreData、NSCoding 和 NSUserDefaults。取决于您要存储的数据,但这些是最好的(第一方)选项。
如果您要使用 NSUserDefaults,请不要使用 standardUserDefaults
您应该使用 initWithSuiteName:
并传入您的应用程序组的名称。
您甚至可以在 NSUserDefaults 上创建一个 category/extension 以简化此过程。
Objective-C
@interface NSUserDefaults (AppGroup)
+ (instancetype)appGroupDefaults;
@end
@implementation NSUserDefaults (AppGroup)
+ (instancetype)appGroupDefaults {
static NSUserDefaults *appGroupDefaults = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
appGroupDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"com.whatever.yourappgroupname"];
});
return appGroupDefaults;
}
@end
Swift
private var _appGroupDefaults = NSUserDefaults(suiteName: "com.whatever.yourappgroupname")!
extension NSUserDefaults {
public func appGroupDefaults() -> NSUserDefaults {
return _appGroupDefaults
}
}