在今日扩展中保存和加载数据(iOS 8)

Mas*_*zza 8 widget nsuserdefaults ios ios8 ios-app-extension

是否可以使用NSUserDefaults在Today Extension上保存和加载数据?关闭通知中心后,窗口小部件的行为类似于终止的应用程序,因此任何数据结果都会丢失.我怎么能解决这个问题?

这是我的代码:

NSUserDefaults *defaults;

- (void)viewDidLoad {

[super viewDidLoad];

defaults = [NSUserDefaults standardUserDefaults];
NSArray *loadStrings = [defaults stringArrayForKey:@"savedStrings"];

if ([loadStrings objectAtIndex:0] != nil) {
    [display setText:[NSString stringWithFormat:@"%@", [loadStrings objectAtIndex:0]]];
}
if ([loadStrings objectAtIndex:1] != nil) {
    calculatorMemory = [NSString stringWithFormat:@"%@", [loadStrings objectAtIndex:1]].doubleValue;
}

}


- (IBAction)saveData:(id)sender {

NSString *displayString;
NSString *memoryString;

NSArray *saveStrings = [[NSArray alloc] initWithObjects: displayString, memoryString, nil];


defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:saveStrings forKey:@"savedStrings"];
[defaults synchronize];


}
Run Code Online (Sandbox Code Playgroud)

Ben*_*G37 19

您需要使用应用程序组标识符而不是com.*例如:

NSUserDefaults *shared = [[NSUserDefaults alloc]initWithSuiteName:@"group.company.appgroup"];
Run Code Online (Sandbox Code Playgroud)

存储数据时不要忘记同步

[shared synchronize];
Run Code Online (Sandbox Code Playgroud)

  • 关于这个主题的精彩教程http://www.glimsoft.com/06/28/ios-8-today-extension-tutorial/ (4认同)