2011-11-11 56 views
-1

我有一個解析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出來(空)?

+0

名稱的價值是什麼? – hypercrypt

+0

這只是一個包含我需要解析其他XML提要的參數的字符串。就像我上面寫的那樣,正確的值出來時,我NSLog它。 – Magnus

+0

你可以發佈第一個'NSLog'的輸出嗎?你不逃避名稱字符串,因此可能有字符在那裏是無效的URL ... – hypercrypt

回答

0

你會想逃離name

NSString上添加類別,然後致電[name urlEncodedString]。例如:

@implementation NSString (URLEncoding) 

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

@end 
+0

NSString * encodedString = [name urlEncodedString];給出警告:NSString可能不會響應-urlEncodedString。啓動時應用程序崩潰 – Magnus

+0

您是否在'NSString'上添加了一個類別?你是否導入了類別? – hypercrypt

+0

我試過NSString * encodedString = [name stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];那麼字符串很好,但URL又是(空)。 WTF – Magnus

0

使用以下..

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; 
+0

我試過這個,並把一個NSLog的數據,出來(null)了。 – Magnus

+0

你的urlString必須是'http://myurl.com/names.asp?name =',名字應該是你想要的任何名字。 –

+0

這就是我要找的,是的。 – Magnus