我正在尝试从 iPhone 程序播放声音文件。
这是代码:
NSString *path = [[NSBundle mainBundle] pathForResource:@"play" ofType:@"caf"];
NSFileHandle *bodyf = [NSFileHandle fileHandleForReadingAtPath:path];
NSData *body = [bodyf availableData];
NSLog( @"length of play.caf %d",[body length] );
NSURL *url = [NSURL fileURLWithPath:path isDirectory:NO];
NSLog( [url description] );
NSLog( @"%d", AudioServicesCreateSystemSoundID((CFURLRef)url, &soundID) );
第一个 NSLog 是检查我是否有权访问该文件(我确实这样做了),第二个 NSLog 是显示文件 URL,第三个 NSLog 返回 -1500“发生了未指定的错误”。
对于第二个 NSLog,我得到以下输出:
file://localhost/Users/alan/Library/Application 敲慬楴敶瑓楲杮upport/iPhone蒠ꁻ猀⾅獕枫牥⽳污湡䰯扩慲祲䄯灰楬惯性楴汤匠灵溃玱椯桐汤枫畭慬潴⽲獕牥䄯灰楬惯楴汤⽳䙂㕅㡂㤱䌭䐳ⴸ䐴䙃㠭㍃ⴷ䍁㈶㠵䙁㤴㈰䰯捯瑡䵥灡前期锐祡挮晡模拟器/用户/应用程序/ BFE5B819-C3D8- 4DCF-8C37-AC6258AF4902/LocateMe.app/play.caf
这要么是由于我对“描述”方法的误解,要么是导致问题的原因。
知道出了什么问题吗?
NSLog 的第一个参数是格式字符串;你正在路过[URL description]
作为第二次使用 NSLog 的格式字符串。这很糟糕,因为如果 URL 的描述包含任何%
字符,然后它会从堆栈中打印随机的东西。
相反,写
NSLog(@"%@", URL);
你甚至不需要使用-description
这里; NSLog 会自动为您调用它,因为%@
意思是“一个对象”,而不是“一个 NSString”,它足够聪明,可以为你做正确的事情。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)