【问题标题】:how to replace the content of NSMutablestring in objective c如何替换目标c中NSMutablestring的内容
【发布时间】:2016-11-18 06:43:54
【问题描述】:

我是目标 c 的新手。我想替换我正在使用代码的可变字符串的内容

NSMutableString *myMutableStringObj = [myMutableStringObj stringByReplacingOccurrencesOfString:@" & " withString:@"And"];

但它向我显示警告 无与伦比的指针类型从NSString * 分配给NSMutableString *

对此有任何建议。我正在使用MutableString

【问题讨论】:

  • buz stringByReplacingOccurrencesOfString 返回 NSString 而不是 NSMutableString。

标签: ios objective-c nsstring nsmutablestring


【解决方案1】:

它告诉你这个函数返回NSString *。如果您想清除该警告。就这样做吧:

NSMutableString *myMutableStringObj = [[myMutableStringObj stringByReplacingOccurrencesOfString:@" & " withString:@"And"] mutableCopy];

【讨论】:

  • 它显示了同样的警告。
  • 您完全误解了可变字符串的工作原理。使用“replaceOccurencesOfString”。您无需这样做就创建了两个对象。
【解决方案2】:

查看NSString Class的方法签名。

- (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target
                                        withString:(NSString *)replacement

此方法返回 NSString 对象。

所以你需要将结果转换为mutalbe字符串或在NSString中捕获结果。

【讨论】:

  • 或者 - 也许 - 使用 mutable 字符串的方法怎么样?
  • @gnasher 你可以关注苹果的文档。很清晰,不费吹灰之力就能搞定
【解决方案3】:

阅读 NSString 和 NSMutableString 的文档。这不仅适用于您,也适用于迄今为止在这里回答的任何人。该线程上的答案绝对令人沮丧。

有一些方法可以用于 NSString,但也可以与 NSMutableString 一起使用,它基于先前的字符串创建一个新的、不可变的字符串。通常以“stringBy...”开头的方法将创建一个新字符串。

还有一些方法,在 NSMutableString 接口中,修改现有 NSMutableString 的内容。像“replaceOccurencesOfString”。

阅读文档并选择适合您的内容。以“stringBy”开头的方法 not 会修改您的可变字符串,它正在创建一个新的不可变字符串。要修改字符串,请使用 NSMutableString 接口中的方法。幸运的是,当您使用错误的方法时,编译器会告诉您。

【讨论】:

    【解决方案4】:

    请使用此代码

     NSMutableString * str1 = [NSMutableString stringWithString:@"Hello Testing"];
        str1 = [[str1  stringByReplacingOccurrencesOfString:@"T" withString:@"B"] mutableCopy];
        NSLog(@"%@",str1);
    

    【讨论】:

    • 您完全误解了可变字符串的工作原理。使用“replaceOccurencesOfString”。当您只需要创建一个对象时,您正在创建三个对象。
    • @gasher729 你能解释一下我在哪里使用三个对象吗?
    猜你喜欢
    • 1970-01-01
    • 2017-03-27
    • 1970-01-01
    • 2011-04-17
    • 1970-01-01
    • 2015-10-26
    • 2015-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多