0

我已经设置了我的应用程序,以便每个应用程序进入前台,它执行一个 Web 调用,从 Web 服务器调用信息,它接收并解析 JSON,然后将其离线存储。

我的应用程序是一个选项卡式应用程序,每个屏幕的信息都是从 JSON 设置的,图像也是从服务器中提取的。所以我希望每个页面上的信息在完成后更新,但它没有更新。

我暂时从模拟器运行我的应用程序,以防万一。目前,我可以获得更新信息的唯一方法是使用该 viewDidAppear 或停止并从 xCode 重新启动应用程序。

我尝试从 AppDelegates 调用类 viewDidLoad

 - (void)applicationWillEnterForeground:(UIApplication *)application
{
    /*
     Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
     */

   WebCalls *wc = [[WebCalls alloc] init];

    DashboardVC *db = [[DashboardVC alloc] init];

    [wc setWebCallDidFinish:^(NSString * json, NSString *ID) {

        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *docDir = [paths objectAtIndex: 0];
        NSString *docFile = [docDir stringByAppendingPathComponent: @"json.txt"];
        [json writeToFile:docFile atomically:NO encoding:NSUTF8StringEncoding error:Nil];

        NSString *docDir2 = [paths objectAtIndex: 0];
        NSString *docFile2 = [docDir2 stringByAppendingPathComponent: @"theID.txt"];
        [ID writeToFile:docFile2 atomically:NO encoding:NSUTF8StringEncoding error:Nil];

        [db testme];
    }];
    [wc getData];


}

这会再次调用 viewDidLoad,但信息不会更新。任何想法为什么?

编辑:在那个类中,它像这样读取 JSON

  NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *docDir = [paths objectAtIndex: 0];
        NSString *docFile = [docDir stringByAppendingPathComponent: @"json.txt"];
        [json writeToFile:docFile atomically:NO encoding:NSUTF8StringEncoding error:Nil];

我可以将 JSON 打印出来,而且 JSON 肯定在更新,但屏幕上的信息却没有。

编辑:通过网络电话更新

4

2 回答 2

0

您也许可以尝试使用委托方法将获取的数据更新到 UI 中。JSON解析结束后调用委托方法。我对 xml 解析做同样的事情,它正在工作。

  • (void)parserDidEndDocument:(NSXMLParser *)parser {

    [self.delegate optimizeAndDrawShortestPath:coordinatesArray];

    [routeArray 发布]; 路由数组 = 无;}

检查上面的例子。这是我对 xml 文档的解析结束的方法。然后正如您在第一行中看到的那样,我调用了一个委托方法来更新 UI 并在地图上绘制线条。委托方法在调用我的解析类对象的类中实现。

我假设,您对 JSON 的处理也与我对 XML 的处理类似。要了解协议和委托方法,请查看此 SO 答案。

我很确定,这就是你要找的。

于 2012-05-10T13:58:49.147 回答
0

修复了这个问题。在应用程序中设置定期网络调用,当进行网络调用时,调用类中的刷新方法。

于 2012-05-23T09:18:24.867 回答