我有第一部分想通了......
- (void)webViewDidFinishLoad:(UIWebView*) myTapView {
NSString *jsString = @"localStorage.getItem('username');";
NSString *someKeyValue = [tapView stringByEvaluatingJavaScriptFromString:jsString];
// This is where I would start storing it so I can retrieve it later
}
所以这是我的问题,我需要存储我从localStorage获得的值,以便我可以再次使用它。问题是我不知道从哪里开始。此代码位于我的ViewController中,用于WebView,因此我需要能够在ViewController.m文件的其他区域中使用它。
存储信息的最佳方法是什么?我还希望上面的代码能够更新值,因为它不会总是相同的用户名(人们可以切换帐户)。
答案 0 :(得分:1)
有几种方法可以在iOS上存储数据,但这取决于您要存储的值类型。如果它只是一个普通字符串或其他“轻量”数据,最好的方法是将其保存到NSUserDefaults
。如果是图片或视频,您可能需要考虑使用NSKeyedArchiver
对其进行归档。否则,如果要构建复杂的数据模型,请使用Core Data。
这是一个很好的post on NSHipster,它详细描述了每种方法的优缺点。
根据您的代码,您希望存储字符串。在这种情况下,我会选择NSUserDefaults
。
答案 1 :(得分:1)
使用NSUserDefaults存储UIWebView本地存储值,如下所示
- (void)webViewDidFinishLoad:(UIWebView*) myTapView {
NSString *jsString = @"localStorage.getItem('username');";
NSString *someKeyValue = [myTapView stringByEvaluatingJavaScriptFromString:jsString];
// Store your Username in iPhone persistence variable and use it later in the application
NSUserDefaults *userdefault = [NSUserDefaults standardUserDefaults];
[userdefault setObject:someKeyValue forKey:@"username"];
[userdefault synchronize];
//use of User default
NSLog(@"User name %@",[userdefault valueForKey:@"username"]);
}