-1

テーブルビューから xmlparser に nsdata を渡しています。解析が完了したら、解析結果に従ってテーブルのステータスを設定したいと思います。私は次のことをしました:

    -(BOOL)getTheServerStatus:(NSData *)webData
{
    if (webData==NULL) 
    {
        return FALSE;
    }



    parser=[[NSXMLParser alloc]initWithData:webData];
    parser.delegate=self;

    [parser parse];

    if([strVal isEqualToString:@"ok"])
    {
        return TRUE;   
    }

    else 
    {
        return FALSE;

    }

}

しかし、解析が完了する前に制御が返されるため、テーブル側で NULL が取得されます。メインスレッドをブロックせずにすべての解析が完了するまで待機する方法はありますか?

4

3 に答える 3

0

NSXMLParser クラスの親のデリゲートを作成して、解析が完了したときに通知します。
解析の完了は、

- (void)parserDidEndDocument:(NSXMLParser *)parser

そのメソッドで、デリゲートを親クラスに呼び出して、解析が完了したことを通知します。

于 2012-08-18T08:24:38.657 に答える
0

クラスで NSXMLParserDelegate を使用する場合は、次のデリゲート メソッドで確認できます。

//This method is called when the XML document has finished parsing, do a [self.tableView reloadData]; here
    - (void)parserDidEndDocument:(NSXMLParser *)parser
    {

    }
于 2012-08-18T07:05:45.113 に答える
-1

使用

- (void)parserDidEndDocument:(NSXMLParser *)parser

デリゲート メソッド。

于 2012-08-18T07:05:26.080 に答える