将字符串var传递给函数

时间:2012-06-28 18:37:26

标签: objective-c ios xcode

当我运行下面的代码时

NSString *chemin;
    chemin = [NSString stringWithFormat:@"chapitre0%d", [sender tag]];
    NSLog(@"chemin : %@",chemin);

    [detailChapitre loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:chemin ofType:@"html"]isDirectory:NO]]];

我得到了: 'NSInvalidArgumentException',原因:' * - [NSURL initFileURLWithPath:isDirectory:]:nil string parameter'

但* chemin在日志中初始化为正确的值。

当然是一个菜鸟问题, 谢谢你的帮助

3 个答案:

答案 0 :(得分:0)

尝试初始化chemin然后将其释放。像这样:

NSString *chemin;
chemin = [[NSString alloc] initWithFormat:@"chapitre0%d", [sender tag]];
NSLog(@"chemin : %@",chemin);

[detailChapitre loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:chemin ofType:@"html"]isDirectory:NO]]];
[chemin release];

答案 1 :(得分:0)

可能是这样,chemin变量可能具有正确的章节,但路径可能是错误的。因此,当您将错误的文件路径传递给NSURL时,它将返回null,这会导致崩溃。

首先得到绝对路径 -

NSString *path   = [[NSBundle mainBundle] pathForResource:@"chapter1" ofType:@"html"];

答案 2 :(得分:0)

这似乎表明文件“chapitre0 [whatever] .html”并不是您所期望的。这可能是因为正在构造一个不正确的字符串,但它也可能只意味着您的构建过程没有将文件粘贴在正确的位置或类似的东西。查看NSLog中指示的字符串,然后查看构建的应用程序的Resources目录,确认文件确实存在并且命名正确。