尝试打印stringByReplacingOccurrencesOfString方法时出错

时间:2011-12-11 19:52:36

标签: objective-c nsstring nslog

当我尝试打印此字符串时,我遇到了错误的访问错误:

NSString *myPath = [myPath stringByReplacingOccurrencesOfString:@"/Users/Me/Library/iPhone/4.2/MyApp/Documents/Photos/pic1.png" 
                                                         withString:@"/Users/John/Library/iPhone/5/MyApp/Documents/Photos/picture.png"];

    NSLog(@"%@", myPath);

为什么呢? 感谢。

2 个答案:

答案 0 :(得分:2)

错误是因为您在尚未实例化的变量(myPath)上调用方法stringByReplacingOccurrencesOfString:withString。您需要在已包含要替换文本的字符串的NSString类的实例上调用该方法。

答案 1 :(得分:1)

当您调用某个方法时,请在receiver上调用它。因此,您在stringByReplacingOccurrencesOfString:withString:上致电myPath

您正在将方法的值分配到

NSString *myPath

这让我假设<{p>}中的myPath

[myPath ....

实际上并未设置为任何内容。 (可能指向垃圾)

你想要的是这样的

NSString *startString = @"hello";

//                            Receiver         Message
//                               |                |
//                               v                v
NSString *replacedString = [startString stringByReplacingOccurrencesOfString:@"hello" 
                                                                  withString:@"bye bye"];

NSLog(@"Results in => %@", replacedString);

// Output
2011-12-11 20:50:01.964 Untitled 2[779:707] Results in => bye bye

在您的上述评论中,您尝试NSString *myPath = [[NSString alloc] init];这将创建一个空字符串。空字符串不包含任何@"/Users/Me/Library/iPhone/4.2/MyApp/Documents/Photos/pic1.png",因此无法替换它们。