2009-09-04 86 views
4
NSString *tmpStr = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]; 
xmlSms = [xmlSms stringByAppendingString:tmpStr]; 
NSLog(xmlSms); 

我得到了上面的代码,但NSLog没有显示任何东西......有人知道这个问题??stringByAppendingString问题在目标c

回答

9

没关系...我想出了为什么。 问题是,当你想在字符串上使用stringByAppendingString时,字符串应该有初始值。

错误例如:

NSString *str1; 
str1 = [str1 stringByAppendingString:@"test"]; 

应该是:

NSString *str1 = @""; 
str1 = [str1 stringByAppendingString:@"test"]; 
4

您对NSLog的调用不正确。尝试:

NSLog(@"%@", xmlSms); 
+2

要展开,'%@'是用于在'的NSLog()'格式字符串对象,它适用于格式说明'NSString'实例,因为它们是对象。这里解释了字符串格式说明符:http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/Strings/Articles/Artt/formatSpecifiers.html#//apple_ref/doc/uid/TP40004265 – 2009-09-04 06:05:30

+1

这不是问题,我已经检查了xmlSms的长度,它显示为0.和nslog(xmlsms)应该工作太多,因为我已经做了很多次。问题是为什么appendingstring不起作用 – BlackSoil 2009-09-04 13:01:12

+0

如何创建xmlSms?你可以显示该变量的代码吗? – fbrereto 2009-09-04 16:09:01

0

在Cocoa中,初始化函数(“构造”)经常回nil如果他们失败出于某种原因或其他。为NSString状态的文档:如果初始化由于某种原因失败

返回nil(例如,如果数据并不代表编码的有效数据)。

您确定传递给init函数的NSData对象实际上包含UTF8编码的字符串吗?如果没有,返回的对象将是nil

+0

是的,NSString * tmpStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 这是你的意思吗? 我认为问题是关于这个,xmlSms = [xmlSms stringByAppendingString:tmpStr]; 但我不明白为什么它不工作.. – BlackSoil 2009-09-04 14:19:19