当我尝试打印此字符串时,我遇到了错误的访问错误:
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);
为什么呢? 感谢。
答案 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"
,因此无法替换它们。