2010-03-01 36 views
7

Tôi muốn kiểm tra xem NSString có phải là URL hợp lệ để tôi có thể phân tích cú pháp thành biến số NSURL ... có cách nào dễ dàng để thực hiện việc này không? :)Kiểm tra xem url hợp lệ để tôi có thể chuyển nó tới NSURL không?

CRASH Đối với một số lý do treo ứng dụng khi kiểm tra .....

NSURL *shortURL = [[NSURL alloc] initWithString:data]; 
if(shortURL == nil) 
{ 
    NSLog(@"INVALID"); 
} 
else { 
    NSLog(@"COOOL"); 
} 

Giao diện điều khiển mang lại cho tôi lỗi này .....

* Ngừng ứng dụng do ngoại lệ uncaught 'NSInvalidArgumentException', lý do: '* - [NSURL initWithString: relativeToURL:]: tham số chuỗi nil' 2010-03-01 19: 24: 14.797 Snippety [8289: 5e3b] Stack: ( 8.307.803, 2419510843, 8.391.739, 8.391.578, 2.898.550, 3.152.497, 12.262, 12.183, 27.646, 2.662.269, 2.661.144, 2454790485,)

Trả lời

9

Edit: câu trả lời dưới đây là không đúng sự thật. (Apple docs: https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSURL_Class/index.html)


NSURL 's URLWithString lợi nhuận nil nếu URL thông qua là không hợp lệ. Vì vậy, bạn chỉ có thể kiểm tra giá trị trả lại để xác định xem URL có hợp lệ hay không.

Ví dụ:

NSURL *url = [NSURL URLWithString:urlString]; 
if(url){ NSLog("valid"); } 
+0

Vì một số lý do khiến ứng dụng bị lỗi ..... Nó hoạt động nếu URL hợp lệ, nếu không nó chỉ bị lỗi ?? ** mã ở trên ** – tarnfeld

+0

Thử URLWithString thay vì initWithString – MarkPowell

+2

NSURL sẽ sẵn sàng xử lý mọi giá trị chuỗi ngoại trừ số không. Đó là điều duy nhất bạn cần đặc biệt đối với –

5

Tôi đang sử dụng phương pháp dưới đây để kiểm tra xem NSString testString là URL hợp lệ:

NSURL *testURL = [NSURL URLWithString:testString]; 
if (testURL && [testURL scheme] && [testURL host]) 
{ 
    NSLog(@"valid"); 
} 
{ 
    NSLog(@"not valid"); 
} 

chương trình kiểm tra tiền tố của URL, ví dụ http: //, https: // hoặc ftp: //

lưu trữ kiểm tra tên miền của URL, ví dụ: google.com hoặc images.google.com

Lưu ý: Điều này sẽ vẫn cung cấp cho bạn một số mặt tích cực sai, ví dụ: khi kiểm tra http://google,com (lưu ý dấu phẩy) sẽ trả lại hợp lệ nhưng chắc chắn chính xác hơn là chỉ kiểm tra xem NSURL có phải là không (không phải là không).

Các vấn đề liên quan