UIWebView必须获取localStorage项目并将其本地存储在应用程序中/本地执行它

时间:2014-01-07 06:41:38

标签: ios objective-c uiwebview local-storage

我有第一部分想通了......

- (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文件的其他区域中使用它。

存储信息的最佳方法是什么?我还希望上面的代码能够更新值,因为它不会总是相同的用户名(人们可以切换帐户)。

2 个答案:

答案 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"]);
    }