【发布时间】:2012-12-09 21:13:19
【问题描述】:
我正在执行一些字符串连接来创建数据库查询。 作为其中的一部分,我需要分配和重新分配 NSString 变量以附加到它。
我目前正在使用此代码:
NSString *retVal = [[NSString alloc]init];
NSString *concat = @"";
retVal = [NSString stringWithFormat:@"%@%@ myfield= 'myvalue'", retVal, concat];
请注意,只要 retVal 和 concat 持有“”(空字符串),我就会在 retVal 中返回空字符串。这绝对不是预期的,因为我应该得到“myfield='myvalue'”。
我错过了什么?
更新:
这是我最后一次尝试:
NSMutableString * retVal = [[NSMutableString alloc] init];
NSString * concat = @"";
[retVal appendString:@"appendstring"];
NSLog(@"%@", retVal); // prints <object returned empty description>
[retVal appendString:concat];
[retVal appendString:@"appendstring1"];
NSLog(@"%@", retVal); // prints %@
【问题讨论】:
-
你为什么先分配初始化
retVal然后重新分配给它? -
我复制并运行了你的代码,它对我来说很好——你在哪里运行你的代码?是否有其他东西将 retVal 设置为空字符串?
-
对我也很好。你在哪里登录?我猜 retVal 在您检查时已被释放。
-
我尝试了多种方法,但运行起来很奇怪,例如下面列出的 nsmutablestring 方法。我什至不记得我已经尝试了多少,但它的行为很奇怪。这个 iOS 5.1 模拟器,xcode 4.5。
标签: ios iphone cocoa-touch nsstring nsmutablestring