我正在为IOS制作一个Objective-c应用程序,我需要能够遍历一堆网页,并使用嵌入式javascript函数返回一些JSON值。
我在应用程序中的其他地方使用这些页面,javascript 根据需要工作。此时,我确实存储了 JSON 响应,但由于用户可能不会查看每个页面,因此应用程序不一定具有要检查的所有 JSON 值。
下面的代码部分是我用来遍历所有页面、加载 HTML 字符串并运行 javascript 函数的代码。问题是值总是返回为空。
-(void)webViewDidFinishLoad:(UIWebView *)webView {
NSLog(@"finished loading");
NSString *jsonValues = [webView stringByEvaluatingJavaScriptFromString:@"getFields()"];
}
for (int i = 1; i <= shifts; i++)
{
ontracMultipleWevViewController *RT9909 = [viewControllerDictionary objectForKey:[NSString stringWithFormat:@"Shift %d RT9909", i]];
if (RT9909 && [RT9909.viewControllers count] > 0) {
for (ontracRTViewController *r9909 in RT9909.viewControllers) {
UIWebView *webView = [[UIWebView alloc] init];
[webView setDelegate: self];
[webView loadHTMLString:r9909.htmlString baseURL:[NSURL URLWithString:r9909.urlToLoad]];
[self webViewDidFinishLoad:webView];
[self.view addSubview:webView];
if([self webViewDidFinishLoad:webView]){
r9909.jsonValues = [webView stringByEvaluatingJavaScriptFromString:@"getFields()"];
if(r9909.jsonValues != nil && ![r9909.jsonValues isEqualToString:@""] && rt9909ShiftCount == 0){
........rest of code
注意:我没有收到任何错误或 NSLogs 建议任何问题
你需要隔离
if([self webViewDidFinishLoad:webView]){
r9909.jsonValues = [webView stringByEvaluatingJavaScriptFromString:@"getFields()"];
阻止for-loop
并将tags
添加到您的网络视图中。
实现
- (void)webViewDidFinishLoad:(UIWebView *)webView;
可选的UIWebView
代表功能并放入您的
if(...) {
r9909.jsonValues = [webView stringByEvaluatingJavaScriptFromString:@"getFields()"];
}
逻辑在这里。if check
现在将基于您将分配的webview.tag
,将在for loop
内创建 Web 视图。