2010-06-12 28 views
10

Tôi có cuộc gọi này để stringwithcontentsofurl:timeout stringwithcontentsofurl

[NSString stringWithContentsOfURL:url usedEncoding:nil error:nil]; 

Làm thế nào tôi có thể cho rằng một thời gian chờ đơn giản? Tôi không muốn sử dụng chủ đề hoặc hàng đợi hoạt động (nội dung của url là khoảng 100 ký tự), tôi chỉ không muốn chờ quá lâu khi kết nối chậm.

Trả lời

9

Trong trường hợp này, bạn có thể nên sử dụng phương thức lớp học NSURLConnection+sendSynchronousRequest:returningResponse:error:; nó sẽ trả về một đối tượng dữ liệu mà bạn có thể khởi tạo chuỗi của mình bằng (sử dụng -initWithData:encoding:). Bạn có thể chỉ định thời gian chờ bằng cách tạo một NSURLRequest bằng phương pháp -initWithURL:cachePolicy:timeoutInterval: của mình, sau đó chuyển yêu cầu đó làm thông số đầu tiên của +sendSynchronousRequest:returningResponse:error:.

+0

Great !!, đó là cũng giống như tôi tưởng tượng nó !! cảm ơn! – sergiobuj

+1

Vấn đề duy nhất với điều này là bạn không có được đoán sẵn về mã hóa mà bạn thực hiện với '+ stringWithContentsOfURL: usedEncoding: error:', vì vậy bạn phải cuộn của riêng mình. –

17

Dưới đây là quan điểm của tôi về nó:

NSString* link = @"http://example.com"; 
NSURLRequest* request = [NSURLRequest requestWithURL:[NSURL URLWithString:link] cachePolicy:0 timeoutInterval:5]; 
NSURLResponse* response=nil; 
NSError* error=nil; 
NSData* data=[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 
NSString* stringFromServer = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease]; 
+1

Tuyệt vời! Hoạt động 100% –