太多的参数的方法调用(Too many arguments to method call)

2019-10-16 15:56发布

我想设置为Twitter的消息应该说在使用的NSString从我的appDelegate我的应用的初始文本。 看看这里的代码:

    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,有?!?!?

任何帮助是极大的赞赏。 :)

Answer 1:

TWTweetComposeViewController方法setInitialText只需要一个参数,是类型NSString* 。 你不能简单地格式化任何和所有NSString传递给方法的变量,你可以用NSString方法stringWithFormat (这是我想,你见过的语法[NSString stringWithFormat:@"%@", myString]

在你的情况,你要么需要简单地调用:

[twitter setInitialText:tweet];

或致电:

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

编辑
我觉得有必要补充,进一步的理解,一个方法只需要一个可变数量的参数(如stringWithFormat )时,它的声明结尾...

例如,看在文档的NSString显示, stringWithFormat被宣布为:

+(id) stringWithFormat:(NSString *)format, ...;

同样, arrayWithObjectsNSArray被宣布为:

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

哪一个会使用像:

NSString* myString1 = @"foo";
NSString* myString2 = @"bar";
NSNumber* myNumber = [NSNumber numberWithInt:42];
NSArray* myArray = [NSArray arrayWithObjects:myString1, myString2, myNumber, nil];


Answer 2:

尝试[twitter setInitialText:tweet];

如果你确实需要一个更复杂的情况下格式化文本,尝试

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



Answer 3:

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

你刚收到你们的“@”和你的“%”以错误的方式应该是

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


文章来源: Too many arguments to method call