Ошибка при попытке печати метода stringByReplacingOccurferencesOfString - PullRequest
0 голосов
/ 11 декабря 2011

Когда я пытаюсь напечатать эту строку, я получил ошибку доступа:

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 ]

2 голосов
/ 11 декабря 2011

Ошибка заключается в том, что вы вызываете метод stringByReplacingOccurferencesOfString: withString для переменной (myPath), для которой не было выполнено создание экземпляра.Вам нужно вызвать этот метод в экземпляре класса NSString, который уже содержит строку, в которой вы заменяете текст.

1 голос
/ 12 декабря 2011

Когда вы вызываете метод, вы вызываете его на receiver. Поэтому вы звоните stringByReplacingOccurrencesOfString:withString: на myPath.

Вы присваиваете значение метода в

NSString *myPath

, что заставляет меня предположить, что 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", поэтому не может заменить их.

...