Objective-C:方法调用预期1的参数太多有2个错误

时间:2013-06-24 10:20:18

标签: objective-c

下面是我的代码,支持我想从网上获取图像并将其保存在我的设备中,但是我无法解决错误,请帮忙。

for ( int i=1; i<=numberOfSlides; i++) {
    NSString *picURLstring = [NSString stringWithFormat:@"http://example.com/Slide%d.jpg", i] ;
    NSURL *picURL = [NSURL URLWithString:picURLstring] ;
    UIImage *Slide = [[UIImage alloc] initWithData:[NSData dataWithContentsOfURL:picURL]];

    NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES);
    NSString *docPostion = [path objectAtIndex:0] ;
    docPostion = [docPostion stringByAppendingPathComponent:@"Slide%d.png",i];
}

错误发生在以下行:

docPostion = [docPostion stringByAppendingPathComponent:@"Slide%d.png",i];

我想根据变量i将图像保存到名称中,我保证此代码在C语言中是正确的,但现在在Objective-c中我不知道为什么我不能这样做。

3 个答案:

答案 0 :(得分:2)

并非所有Objective C方法都将格式字符串作为参数/参数。您需要将字符串包裹在NSString stringWithFormat:这样的呼叫中

docPostion = [docPostion stringByAppendingPathComponent:[NSString stringWithFormat:@"Slide%d.png",i]];

答案 1 :(得分:2)

而不是

docPostion = [docPostion stringByAppendingPathComponent:@"Slide%d.png",i];

使用

docPostion = [docPostion stringByAppendingPathComponent:[NSString stringWithFormat:@"Slide%d.png",i]];

您不能将格式字符串与任何NSString方法一起使用,只能使用某些方法(通常在其名称中使用单词format)。

答案 2 :(得分:0)

方法stringByAppendingPathComponent在这里传递一个变量作为参数2.(在逗号后首先"Slide%d.png"然后i。这就是它产生这个错误的原因。这是good description stringByAppendingPathComponent的工作原理。