Iphone 奇怪的NSString与NSURL行为

Iphone 奇怪的NSString与NSURL行为,iphone,objective-c,xcode,cocoa,Iphone,Objective C,Xcode,Cocoa,我有一个解析XML提要的类。在该课程中,我必须采用以下方法: -(id)loadXMLByURL:(NSString *)urlString name:(NSString*)name{ NSString *urls = [[NSString alloc]initWithFormat:@"%@%@" , urlString, name]; NSLog(@"STRING URL: %@" , urls); NSURL *url = [NSURL URLWithString:urls];

我有一个解析XML提要的类。在该课程中,我必须采用以下方法:

-(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是正确的url,但是NSURL显示为(null)

下面是我调用该方法的地方:

 //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 name,它将显示正确的值

有人知道为什么NSURL显示为(null)吗?

使用以下命令

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;

您将要转义
name

NSString
上添加一个类别,然后调用
[name urlEncodedString]
。e、 g:

@implementation NSString (URLEncoding)

- (NSString *)urlEncodedString
{
    return (NSString *)CFURLCreateStringByAddingPercentEscapes(NULL,
                                                               (CFStringRef)self,
                                                               NULL,
                                                               (CFStringRef)@"!*'\"();:@&=+$,/?%#[]% ",
                                                               kCFStringEncodingUTF8);
}

@end

我试过了,在数据上放了一个NSLog,结果也是(null)。您的urlString必须是
http://myurl.com/names.asp?name=
和name应该是您想要的任何名称。这就是我要查找的,是的。它只是一个字符串,包含解析其他XML提要所需的参数。就像我在上面写的,当我记录它时,正确的值会出来。你能发布第一个
NSLog
的输出吗?您没有转义名称字符串,因此其中可能有对URL无效的字符…我尝试转义名称字符串,使用NSUTF8和NSASCII,URL不再是(null)。看起来像这样:。当url类似于此时,它在xml.NSString*encodedString=[name urlEncodedString]中没有任何节点;给出警告,说明:NSString可能不会响应-urlEncodedString。应用程序启动时崩溃您是否在
NSString
上添加了类别?您导入了类别吗?我尝试了NSString*encodedString=[name stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];那么字符串就可以了,但是URL又是(null)。WTF
encodedString=(NSString*)CFURLCreateStringByAddingPercentEscapes(NULL,(CFStringRef)name,NULL,(CFStringRef)@“!*”\”():@&=+$,/?%\\[%“,kCFStringEncodingUTF8)我这样做了,url现在是: