2011-02-05 33 views
9

NSURL in null. Lý do là gì?Tạo NSURL là null

NSString *webStr = [[NSString alloc] initWithFormat:@"%@",[webArray objectAtIndex:1]]; 

NSLog(@"urlString = %@",webStr); // its printing correct url string 

NSURL *webURL = [[NSURL alloc] initWithString:webStr]; 

NSLog(@"url = %@",webURL); // its printing null 

[webURL release]; 

[webStr release]; 
+2

Vui lòng định dạng mã trong câu hỏi của bạn bằng cách nhấp vào nút {}. http://meta.stackexchange.com/questions/22186/how-do-i-format-my-code-blocks –

Trả lời

27

Bạn nên làm như sau.

NSString *webStr = [[NSString alloc] initWithFormat:@"%@",[webArray objectAtIndex:1]]; 

NSLog(@"urlString = %@",webStr); // its printing correct url string 

NSURL *webURL = [[NSURL alloc] initWithString:[webStr stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]]; 

NSLog(@"url = %@",webURL); // it should print it 

[webURL release]; 

[webStr release]; 

Tôi đã sử dụng NSASCIIStringEncoding nhưng bạn cũng có thể sử dụng UTF8 hoặc bất kỳ mã hóa nào khác.

+0

Ya bây giờ chỉ có tôi đến để biết rằng giá trị chứa không gian nằm trong mảng ... cảm ơn bạn rất nhiều. – Jeeva

+0

Có, không gian là điều đầu tiên không được chấp nhận trong url. :) Không có gì. –

+0

Cảm ơn, nó giúp. – Unheilig

2

từ các tài liệu cho -[NSURL initWithString:]:

Nếu chuỗi đã bị thay đổi, trả về nil.

Phương pháp này hy vọng URLString chứa bất kỳ mã thoát phần trăm cần thiết nào là ‘:’, ‘/’, ‘%’, ‘#’, ‘;’ và ‘@’. Lưu ý rằng lưu lượng ‘%’ được dịch qua UTF-8.

làm tăng: đầu vào của bạn là gì?

+0

Thứ hai. Mã Nishanth.jeeva được đăng không chứa các lỗi rõ ràng và sẽ hoạt động như mong đợi. –

+0

[đối tượng webArrayAtIndex: 1] chứa "http://www.chennaispider.com/resources/2838-Details-Chennai-City-Fire-Stations.aspx"..Nhưng vẫn in url bằng url. – Jeeva

+0

URL của bạn phải đáp ứng các yêu cầu được chỉ định trong RFC 1738: http://www.ietf.org/rfc/rfc1738.txt - ví dụ: 'http: // : /? ' –

0
NSLog(@"urlString = %@",webStr); // its printing correct url string 

Nó không in đúng chuỗi URL. Nó chỉ in chuỗi. Vì vậy, nếu NSURL * webURL = [[Cấp phép NSURL] initWithString: webStr] trả về nil, điều đó có nghĩa là chuỗi của bạn không phải là URL hợp lệ.