0

在使用 C++ 之后,我是 Objective-C 的新手。在 XML 文件解析期间使用 NSMutableString 时遇到问题。我有这样的 NSMutableString 结构:

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

然后,我将 CurrentStruct 声明为 ParserDelegate 的实例变量:

@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 回答