pathForResource 不起作用
Posted
技术标签:
【中文标题】pathForResource 不起作用【英文标题】:pathForResource doesn't work 【发布时间】:2010-05-04 16:51:52 【问题描述】:我有问题
NSString *filePaht = [[NSBundle mainBundle] pathForResource:(NSString *)name ofType:(NSString *)ext];
如果我用过
NSString *filePaht = [[NSBundle mainBundle] pathForResource:@"soundName" ofType:@"aiff"];
没关系。但是当我使用
NSString *fileName = [[file.list objectAtIndex:index] objectForKey:@"soundName"];
NSString *filePaht = [[NSBundle mainBundle] pathForResource:fileName ofType:@"aiff"];
这不行
有什么想法吗!?
谢谢
【问题讨论】:
问题似乎出在fileName
,但如果没有更多代码就很难说。什么是file.list
,它是如何初始化的?
“这不行”你有什么具体问题?
【参考方案1】:
我猜测 file.list 中的 fileName 包含文件扩展名。因此,您正在搜索不存在的“soundName.aiff.aiff”。尝试传递 @"" 作为类型或从文件名中删除扩展名:
fileName = [fileName stringByDeletingPathExtension];
【讨论】:
【参考方案2】:检查您的调试器控制台,因为它可能会告诉您您做错了什么。
[file.list objectAtIndex:index]
如果您收到 NSRangeException,可能是因为 index
包含一个超出数组边界的索引。请记住,Cocoa 中的数组是串行的,而不是关联的;如果你删除一个对象,它之后的所有对象的索引都会减少 1,保持 0 ≤(每个有效索引)
也可能是因为you never declared a variable named index
。
NSString *fileName = [[file.list objectAtIndex:index] objectForKey:@"soundName"]; NSString *filePaht = [[NSBundle mainBundle] pathForResource:fileName ofType:@"aiff"];
如果什么都没发生或者你得到一个 NSInternalInconsistencyException,它可能是以下之一:
fileList
是 nil
。
从[file.list objectAtIndex:index]
返回的字典没有soundName
键的对象。
如果您在控制台中收到“不响应选择器”消息,它可能是以下之一:
file.list
是一个对象,但不是 NSArray。
[file.list objectAtIndex:index]
不是 NSDictionary。
fileName
([[file.list objectAtIndex:index] objectForKey:@"soundName"]
) 不是 NSString。
请记住,声明变量时使用的类名与编译器无关;在运行时,它只是一个持有指向对象的指针的变量。对象可以是任何类。将不是 NSString 的内容放入 NSString *
变量中是完全有效的;它只是带有非常高(几乎可以肯定)错误行为和/或此后不久崩溃的风险。
这样的崩溃通常会以“不响应选择器”异常的形式表现出来(例如,在某个对象向对象发送一条 NSString 对象应该响应但对象不响应的消息之后因为它不是 NSString)。
无论您遇到什么问题,都可以使用the Debugger 进行调查。
【讨论】:
【参考方案3】:对不起,我的错。 我从 XML 文件中获取数据 并且该数据包括“\n”。是的,我看到“\n”所以我用@“”替换 但这还不够,我必须再次修剪空间值。
感谢大家的建议^_^
【讨论】:
以上是关于pathForResource 不起作用的主要内容,如果未能解决你的问题,请参考以下文章
Angular 的 $http.post 不起作用,它的 $http... 也不起作用,但 jQuerys ajax 起作用。为啥?