【问题标题】:error : 'Attempt to mutate immutable object with appendString:' --错误:'尝试使用 appendString 改变不可变对象:' --
【发布时间】:2011-03-08 13:33:35
【问题描述】:

我收到一个错误 '尝试用 appendString 改变不可变对象:'

我的代码是

NSMutableString *resultString= [[NSMutableString alloc]init];


for (NSMutableString *s in self.ArrayValue)
{
    [resultString appendString:s];
    NSLog(resultString);

}  

ArrayValue 是 NSMutableArray。
我无法理解问题出在哪里

提前谢谢你

【问题讨论】:

  • 当您减少代码以便发布它时,您应该确保您发布的 sn-p 给出的结果与整个代码相同。

标签: iphone objective-c nsmutablearray nsmutablestring


【解决方案1】:

正如发布的那样,您拥有的代码不会给您描述的错误。可能,在分配 resultString 和 for 循环之间的某个地方,您正在用普通的 NSSring 覆盖它。

【讨论】:

  • 你是对的,我在做“resultString = @”“;”它给了我一个错误
【解决方案2】:

只要有这样的:

它对我有用...

    NSMutableString *resultString= [[NSMutableString alloc]init];
NSMutableArray *ArrayValue=[[NSMutableArray alloc]init];
[ArrayValue addObject:@"One"];
[ArrayValue addObject:@"Two"];
[ArrayValue addObject:@"Three"];

for (NSMutableString *s in ArrayValue)
{
    [resultString appendString:s];
    NSLog(@"%@",resultString);------->You should use %@ to print the string otherwise will show your warning.

}  

控制台上的O/P:

2011-03-08 19:13:02.243 iPadMables[4557:207] 一个

2011-03-08 19:13:06.224 iPadMables[4557:207] OneTwo

2011-03-08 19:13:09.388 iPadMables[4557:207] OneTwoThree

【讨论】:

    【解决方案3】:
        ArrayValue = [NSMutableArray arrayWithObjects:@"b",@"o",@"n",nil];
    NSMutableString *resultString= [[NSMutableString alloc]init];
    
    for (NSMutableString *s in self.ArrayValue)
    {
        [resultString appendString:s];
        NSLog(resultString);
    
    }  
    

    为我工作..

    【讨论】:

    • 数组值来自网络服务器,我在其他视图中使用相同的方法并且它工作正常
    猜你喜欢
    • 2012-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多