【问题标题】:Assigning NSMutableString from NSString Warning从 NSString 警告分配 NSMutableString
【发布时间】:2014-03-09 03:22:54
【问题描述】:

我的程序中有以下三行代码:

NSMutableString *stringOne = [NSMutableString stringWithFormat:@"Hello "];
NSMutableString *stringTwo = [NSMutableString stringWithFormat:@"World"];
NSMutableString *sayIt = [stringOne stringByAppendingString:stringTwo];

尽管它有效,但第三行导致警告 Assigning NSMutableString * from NSString *.

我在这里不知所措,因为我使用的一切都是 NSMutableString。

【问题讨论】:

    标签: ios objective-c nsstring nsmutablestring


    【解决方案1】:

    不完全是。 stringByAppendingString 不返回 NSMutableString。而是执行以下操作:

    NSMutableString *sayIt = [NSMutableString stringWithString:stringOne];
    [sayIt appendString:stringTwo];
    

    或者

    NSMutableString *sayIt = [[stringOne stringByAppendingString:stringTwo] mutableCopy];
    

    【讨论】:

    • 或者:NSMutableString *sayIt = [[stringOne stringByAppendingString:stringTwo] mutableCopy];
    • 我实际上在发布问题后就想出了 XJones 解决方案。 Aaron Brager 的作品也像冠军一样。我假设因为我从 NSMutableString 调用 stringByAppendingString ,所以它也会返回一个 NSMutableString 。这就是我假设的结果。感谢您的帮助!
    • 我同时回答了我自己的问题,你们俩也发布了 :) 三个答案总比没有好!
    • 还有其他方法可以做到这一点。关键是要意识到在NSMutableString 实例上调用的NSString 方法仍然返回NSString。不确定您如何在应用程序的上下文中使用它,但我只会在必要时使用可变字符串。在您的原始示例中,stringOnestringTwo 可以是 NSString,并且只有 sayIt 需要是可变的。这也是假设您稍后以其他方式更改字符串。无论如何,很乐意提供帮助。
    • 谢谢。我确实需要一个 NSMutableString 来完成我正在做的事情。我只是写了上面的简单示例来说明问题。
    【解决方案2】:

    我刚刚意识到stringByAppendingString: 会返回一个NSString,尽管它是从NSMutableString 对象调用的。由于我正在处理NSMutableString,我应该使用该类的appendString: 方法。没有警告的新代码是:

    NSMutableString *stringOne = [NSMutableString stringWithFormat:@"Hello "];
    NSMutableString *stringTwo = [NSMutableString stringWithFormat:@"World"];
    [stringOne appendString:stringTwo];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-07
      • 2016-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-26
      相关资源
      最近更新 更多