Как обойти «Xcode не удалось найти исходный файл»
-
19-09-2019 - |
Вопрос
Я работаю с платформой ID3 в Xcode (которая с тех пор исчезла из Интернета, включая кеш Google!).
Я тестирую функцию импорта mp3, которая позволяет им редактировать теги по мере их импорта.Одним из тестовых случаев является поврежденный или недействительный mp3-файл без правильного заголовка id3.У меня проблема в том, что при обновлении тегов недействительного mp3 (updateFile:
), платформа ID3 пытается использовать id3V1Tag.m
(Я предполагаю, что он возвращается к этому, если не может найти тег v2), и именно здесь я получаю ошибку Xcode (при запуске программы, а не при сборке):
Xcode could not locate source file: id3V1Tag.m (line: 299)
Даже в релизной сборке это приводит к сбою программы, поэтому я не могу игнорировать это.
Я попытался поместить вокруг него блок try/catch, но он не рассматривается как исключение, поэтому не перехватывается.Функция загрузки данных тега для файла возвращает BOOL, но похоже, что она возвращает false только в том случае, если данный файл не существует, поэтому это тоже не помогает.
Текущий код:
[tagData release];
tagData = [[TagAPI alloc] initWithGenreList:nil];
tagsLoaded = [tagData examineFile:exportPath];
if(tagsLoaded) {
[tagData setTitle:title];
[tagData setArtist:artist];
[tagData setComments:comments];
@try {
[tagData updateFile];
}
@catch (id e){
NSLog(@"h");
}
}
Решение
Ошибка, которую вы получаете, заключается в том, что Xcode пытается найти исходный файл id3V1Tag.m, чтобы показать его во время отладки.Никакой написанный вами код не повлияет на это.
Если у вас нет исходного файла id3V1Tag.m в дистрибутиве вашего фреймворка, вы ничего не можете с этим поделать, и мало что можно сделать, кроме как игнорировать его (кроме того, чтобы посмотреть, можно ли избежать его запроса, например, не устанавливать точку останова в нем, не заходя в него и не вылетая в нем).
Если он у вас есть и вы его собираете, то, возможно, вы не используете правильную отладочную информацию, поэтому вам придется рассказать нам больше о настройке вашей сборки.
Другие советы
Итак, проблема, с которой вы столкнулись, заключается в том, что ваша программа дает сбой при попытке скомпилировать id3V1Tag.m или во время запуска программы.Я немного запутался в этом.
Если происходит сбой во время работы, возможно, это проблема с отсутствием файла кода в библиотеке?Как именно вы читаете информацию тега ID3?Это через ваш собственный код или через стороннюю библиотеку/класс.