0

C++ を使用した後、Objective-C を初めて使用します。XML ファイルの解析中に NSMutableString を使用すると問題が発生しました。次のような NSMutableString を持つ構造体があります。

struct HotelStruct {
...
NSMutableString *h_name;
...
};

次に、ParserDelegate のインスタンス変数として CurrentStruct を宣言します。

@interface ParserDelegate : NSObject <NSXMLParserDelegate> {
...
struct HotelStruct CurrentStruct;
...
}

最後に、 CurrentStruct.h_name (m_isName == YES) に文字列を追加しようとしています:

-(void)parser:(NSXMLParser*)parser foundCharacters:(NSString *)string {
if (m_isName) {
[CurrentStruct.h_name appendString:string];
}

しかし、デバッガーは、CurrentStruct.h_name が以前と同じように AppendString を実行した後も 0x0 のままであると述べていますが、文字列変数には必要な値があります。appendString がスキップされたように見えるので、ちょっと混乱しています。助けていただければ幸いです。ありがとうございました!

4

3 に答える 3

3

文字列オブジェクトを初期化する必要があります:

h_name = [[NSString alloc] init];

完了したらリリースすることを忘れないでください:

[h_name release];
于 2012-07-04T07:58:08.243 に答える
0

構造体の代わりに標準オブジェクトを使用しない理由はありますか? NSStringが初期化/割り当てられていない ため、おそらく発生しています。

これを試して:

CurrentStruct-> h_name = [[NSString alloc] init];
于 2012-07-04T07:57:57.083 に答える
0

うまくいきます

 -(void)parser:(NSXMLParser*)parser foundCharacters:(NSString *)string {

     if (m_isName) {

         if(!CurrentStruct.h_name)
             CurrentStruct.h_name = [[NSMutableString alloc] init];

           [CurrentStruct.h_name appendString:string];

           NSLog(CurrentStruct.h_name);
           NSLog(m_isName);
       }
    }

注: コンソール ログを確認し、使用後にメモリを解放することを忘れないでください。

于 2012-07-04T08:13:04.263 に答える