奇怪的NSString与NSURL行为
我有一个解析XML提要的类。在I类有以下方法:奇怪的NSString与NSURL行为
-(id)loadXMLByURL:(NSString *)urlString name:(NSString*)name{
NSString *urls = [[NSString alloc]initWithFormat:@"%@%@" , urlString, name];
NSLog(@"STRING URL: %@" , urls);
NSURL *url = [NSURL URLWithString:urls];
NSLog(@"%@" , url);
parser = [[NSXMLParser alloc]initWithContentsOfURL:url];
parser.delegate = self;
BOOL success = [parser parse];
if (success) {
NSLog(@"No error");
}else{
NSLog(@"Error: %@" , parser.parserError);
}
return self;
}
第一的NSLog是正确的网址,但该NSURL出来的(空)
这里就是我所说的方法:
//f is an object where I store the value of name from another feed, which I have to use as a parameter in the url for this feed
NSString *name = f.name;
myParser = [[MyParser alloc]loadXMLByURL:@"http://myurl.com/names.asp?name=" name:name];
如果我的NSLog名称在这里,它显示正确的值。
任何人都知道为什么NSURL出来(空)?
你会想逃离name
。
在NSString
上添加类别,然后致电[name urlEncodedString]
。例如:
@implementation NSString (URLEncoding)
- (NSString *)urlEncodedString
{
return (NSString *)CFURLCreateStringByAddingPercentEscapes(NULL,
(CFStringRef)self,
NULL,
(CFStringRef)@"!*'\"();:@&=+$,/?%#[]% ",
kCFStringEncodingUTF8);
}
@end
NSString * encodedString = [name urlEncodedString];给出警告:NSString可能不会响应-urlEncodedString。启动时应用程序崩溃 – Magnus
您是否在'NSString'上添加了一个类别?你是否导入了类别? – hypercrypt
我试过NSString * encodedString = [name stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];那么字符串很好,但URL又是(空)。 WTF – Magnus
使用以下..
NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:[NSString stringWithFormat::@"%@%@" , urlString, name]]];
parser = [[NSXMLParser alloc] initWithData: data];
parser.delegate = self;
BOOL success = [parser parse];
if (success) {
NSLog(@"No error");
}else{
NSLog(@"Error: %@" , parser.parserError);
}
return self;
名称的价值是什么? – hypercrypt
这只是一个包含我需要解析其他XML提要的参数的字符串。就像我上面写的那样,正确的值出来时,我NSLog它。 – Magnus
你可以发布第一个'NSLog'的输出吗?你不逃避名称字符串,因此可能有字符在那里是无效的URL ... – hypercrypt