使用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];
}
但是调试器说在执行AppendString之后,CurrentStruct.h_name仍然是0x0,而字符串变量具有所需的值。 我有点困惑,因为它看起来像是刚跳过appendString。 我很感激任何帮助。谢谢!
答案 0 :(得分:3)
您需要初始化字符串对象:
h_name = [[NSString alloc] init];
并且不要忘记在完成后释放它:
[h_name release];
答案 1 :(得分:0)
是否有理由不使用标准对象而不是结构?这可能发生了,因为NSString
尚未初始化/分配。
试试这个:
CurrentStruct-> h_name = [[NSString alloc] init];
答案 2 :(得分: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);
}
}
注意:请在使用后检查控制台日志和不要忘记释放内存。