方法调用的参数太多

时间:2012-05-01 23:39:31

标签: objective-c iphone xcode compiler-errors arguments

我正在尝试使用appDelegate中的NSString设置Twitter消息应该在我的应用中说的内容的初始文本。看看这里的代码:

    NSString *tweet;
tweet=[MyWebFunction tweet:appDelegate.stadium_id];


if([deviceType hasPrefix:@"5."]){

    // Create the view controller
    TWTweetComposeViewController *twitter = [[TWTweetComposeViewController alloc] init];

    [twitter setInitialText:@"@%",tweet];

问题是,在twitter setInitialText中是否存在错误,即方法调用的参数太多,预期为1,有2.?!?!?

非常感谢任何帮助。 :)

Screenshot

3 个答案:

答案 0 :(得分:6)

TWTweetComposeViewController方法setInitialText只接受一个参数,类型为NSString*。您不能简单地使用NSString方法NSString格式化传递给方法的任何和所有stringWithFormat变量(我想,在那里您已经看到了语法{ {1}})。

在您的情况下,您需要简单地致电:

[NSString stringWithFormat:@"%@", myString]

或致电:

[twitter setInitialText:tweet];

修改
为了进一步理解,我觉得有必要添加一个方法,当它的声明以[twitter setInitialText:[NSString stringWithFormat:@"%@", tweet]]

结束时,它只接受可变数量的参数(例如stringWithFormat

例如,查看...的文档会显示NSString被声明为:

stringWithFormat

同样,+(id) stringWithFormat:(NSString *)format, ...; 中的arrayWithObjects被声明为:

NSArray

哪一个会使用:

+(id) arrayWithObjects:(id)firstObj, ...;

答案 1 :(得分:0)

尝试[twitter setInitialText:tweet];

如果您确实需要格式化文本来处理更复杂的案例,请尝试

[twitter setInitialText:[NSString stringWithFormat:@"%@", tweet]];

答案 2 :(得分:0)

"[twitter setInitialText:@"@%",tweet];"

你刚刚得到了你的“@”而你是“%”错误的方式应该是

[twitter setInitialText:@"**%@**",tweet];