【问题标题】:Unable to append String NSMutableString - Error无法附加字符串 NSMutableString - 错误
【发布时间】:2023-03-05 16:20:02
【问题描述】:

我有以下代码

NSMutableString *ibmcountryCodeLabel=[[NSMutableString alloc]init];
NSMutableString *imobileNumberValue=[[NSMutableString alloc]init];
ibmcountryCodeLabel=@"555";
imobileNumberValue=@"333";
NSLog(@"Done1");
[ibmcountryCodeLabel appendString:imobileNumberValue];
NSLog(@"Done2");

虽然当我尝试将一个字符串附加到另一个字符串时,这两个字符串都是可变的,但我得到“由于未捕获的异常 'NSInvalidArgumentException' 而终止应用程序,原因:'尝试使用 appendString 改变不可变对象:'”

通读所有线程。但无法找到解决方案。请帮助我。感谢您的宝贵时间

【问题讨论】:

    标签: ios nsmutablestring


    【解决方案1】:

    问题来了:这个赋值产生了一个可变的字符串对象:

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

    然而,在这个赋值之后,ibmcountryCodeLabel 指向的对象不再是可变的:

    ibmcountryCodeLabel=@"555";
    

    这是因为@"555" 常量是NSString 的不可变子类。尝试修改它会导致运行时错误。

    修改代码如下解决这个问题:

    NSMutableString *ibmcountryCodeLabel=[NSMutableString stringWithString:@"555"];
    NSMutableString *imobileNumberValue=[NSMutableString stringWithString:@"333"];
    

    【讨论】:

    • 谢谢。在实际中,我从文本框中获取 Countrycodelabel 以及 mobileNumberValue 并且需要附加两者。你能帮我看看怎么做吗??
    • @TimothyRajan 当然 - 只需将文本框中的文本传递给 NSMutableStringstringWithString: 方法即可。
    • 另一种选择是将ibmcountryCodeLabel=@"555";替换为[ibmcountryCodeLabel appendString:@"555"];
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-05
    • 2018-07-16
    相关资源
    最近更新 更多