我正在使用Xcode中的ID3框架(此后它已从网络中消失 - 包括谷歌缓存!)。
我正在测试一个导入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");
}
}
答案 0 :(得分:2)
您遇到的错误是Xcode正在尝试找到您的源文件id3V1Tag.m,以便在调试期间显示它。您编写的代码不会影响这一点。
如果您的框架发行版中没有id3V1Tag.m源文件,那么您无法做到这一点,除此之外没有什么可做但忽略它(除了看看是否可以避免导致它被请求,比如不在其中设置断点,不插入它,也不会在其中崩溃)。
如果您拥有它并正在构建它,那么您可能没有使用正确的调试信息构建,因此您必须告诉我们有关您的构建设置的更多信息。
答案 1 :(得分:0)
所以你遇到的问题是当你尝试编译id3V1Tag.m或运行程序时你的程序崩溃了。我对此感到有点困惑。
如果在运行时崩溃可能这是库中缺少代码文件的问题?你是如何准确阅读ID3标签信息的?是通过您自己的代码还是通过第三方库/类。