【问题标题】:Putting the value of a text field into another string将文本字段的值放入另一个字符串
【发布时间】:2011-05-19 00:20:06
【问题描述】:
当我写这个时:
NSLog("Text Value %@",statutsField.text);
它工作正常,但是当我这样做时:
NSURL *url = [NSURL URLWithString:@"http://MyUrl/%@",statutsField.text];
我得到一个错误:
方法调用的参数过多,预期...
请帮忙。
【问题讨论】:
标签:
objective-c
cocoa-touch
ios
nsstring
【解决方案1】:
URLWithString: 只接受一个参数;一个NSString。您传递了两个,字符串@"http://MyUrl/%@" 和statutsField.text 中的字符串。
您需要构造字符串的组合版本,并将该组合版本传递给URLWithString:。为此使用+[NSString stringWithFormat:]:
NSString * myURLString = [NSString stringWithFormat:@"http://MyUrl/%@", statutsField.text]
NSURL * myURL = [NSURL URLWithString:myURLString];
函数NSLog 接受一个变量 个参数,基于它在第一个字符串(格式字符串)中找到的format specifiers 的数量;这就是您的NSLog 通话有效的原因。方法stringWithFormat: 的工作原理类似。对于在第一个参数中找到的每个%@,它会从参数列表的其余部分中取出一个对象并将其放入结果字符串中。
详情可以查看字符串编程指南中的Formatting String Objects。
【解决方案2】:
试试[NSURL URLWithString:[NSString stringWithFormat:@"http://MyUrl/%@",statutsField.text]];
希望对您有所帮助。
【解决方案3】:
试试这个:
NSString *base = @"http://MyUrl/";
NSString *urlString = [base stringByAppendingString:statutsField.text];
NSURL *url = [NSURL URLWithString:urlString];
URLWithString 方法只接受 1 个参数,但您传递了 2 个参数,即字符串 @"http://MyUrl/%@" 和 statutsField.text
所以你必须事先将字符串连接起来,或者使用NSString inline 的stringWithFormat 方法。