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,它可能是以下之一:

fileListnil。 从[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 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

PHP.INI不起作用

C#DataGridView的行列表头背景色字体色不起作用

关于Animate css不起作用的原因

修改php.ini不起作用是为啥

Vba窗体的keydown怎么不起作用

Angular 的 $http.post 不起作用,它的 $http... 也不起作用,但 jQuerys ajax 起作用。为啥?