网址下载
http://code.google.com/p/mwiphonesdk/source/browse/#svn/trunk/iMADE/PrepTasks/08
我在上面链接的位置有代码,我使用 NSMutableString 在数据下载时追加字符串。但我发现使用appendString不会增加可变字符串的长度。我一定是做错了。
当我完成后,我需要将 NSMutableString 转换为 NSString 以返回它。我已经找到了这样做的例子,但我还没有看到。
我最熟悉Java和C#,其中有一个StringBuffer / StringBuilder,它允许你追加片段,它们只是在末尾调用toString来获得一个String。在Objective-C中看起来并不那么容易。
NSString* str = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
#pragma mark TODO Confirm this is appending a value to the mutable string
[self.mutableString appendString:str];
NSLog(@"str length: %d, %d", [str length], [self.mutableString length]);
上面是调用appendString的代码部分。
我看到str的长度大于> 0但调用appendString不会增加self.mutableString的长度。
我在这里做错了什么?
答案 0 :(得分:7)
至于拥有NSMutableString*
并且需要返回NSString*
,前者是后者的子类,所以只要您看到NSString*
和NSMutableString*
就足够了-is。
您的代码看起来没问题。我唯一能想到的是,初始化str
变量时可能没有任何数据可言。在这种情况下,附加一个空字符串将对mutableString无效。
您还需要确保self.mutableString
已正确分配和初始化。您可以向NSObject*
发送nil
的消息,[self.mutableString length]
返回0时可能会产生误导。
答案 1 :(得分:3)
我已经解决了这个问题。我只是没有初始化NSMutableString值,它透明地没有做任何事情。
在附加字符串之前,我输入以下代码。
if (_mutableString == nil){
_mutableString = [[NSMutableString alloc] init];
}
感谢大家的回答。很高兴知道我可以使用NSMutableString代替NSString。 (太容易了):)