方法调用的参数太多

1 iphone xcode arguments compiler-errors objective-c

我正在尝试使用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];
Run Code Online (Sandbox Code Playgroud)

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

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

截图

ins*_*r-g 6

TWTweetComposeViewController方法setInitialText只接受一个参数,属于类型NSString*.您不能简单地格式化NSString传递给方法的任何和所有变量,就像您可以使用该NSString方法一样stringWithFormat(我想,您已经看到了语法[NSString stringWithFormat:@"%@", myString]).

在您的情况下,您需要简单地调用:

[twitter setInitialText:tweet];
Run Code Online (Sandbox Code Playgroud)

或致电:

[twitter setInitialText:[NSString stringWithFormat:@"%@", tweet]]
Run Code Online (Sandbox Code Playgroud)

编辑
我认为有必要添加,以进一步理解,一个方法只有stringWithFormat在其声明结束时才采用可变数量的参数(例如)...

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

+(id) stringWithFormat:(NSString *)format, ...;
Run Code Online (Sandbox Code Playgroud)

同样,arrayWithObjectsin NSArray声明如下:

+(id) arrayWithObjects:(id)firstObj, ...;
Run Code Online (Sandbox Code Playgroud)

哪一个会用到:

NSString* myString1 = @"foo";
NSString* myString2 = @"bar";
NSNumber* myNumber = [NSNumber numberWithInt:42];
NSArray* myArray = [NSArray arrayWithObjects:myString1, myString2, myNumber, nil];
Run Code Online (Sandbox Code Playgroud)