2009-06-21 3 views
50

Tôi đang cố cập nhật ứng dụng iPhone của mình để hoạt động với OS 3.0. Tôi có một UIWebView cho thấy một trang tốt. Nhưng khi tôi nhấp vào một liên kết, nó sẽ gọi đại biểu của tôi cho didFailLoadWithError và lỗi là Thao tác không thể hoàn thành được. (NSURLErrorDomain error -999.) Tôi xác nhận điều này vẫn đang làm việc với OS 2.2.1, vì vậy nó là một cái gì đó thay đổi trong 3.0.Làm cách nào để sửa lỗi NSURLErrorDomain -999 trong iPhone 3.0 OS

Bất kỳ ý tưởng nào?

+0

chi tiết như trang nào đang trong UIWebView (nếu đó là công cộng) và làm thế nào bạn thiết lập quan điểm này và đại biểu trong mã có thể có ích. – dlamblin

+0

Tôi đang trên đường bây giờ và sẽ nhận thêm thông tin chi tiết khi tôi quay lại. Nó là một trang web công cộng. Trong việc đào sâu hơn, có vẻ như nó có thể liên quan đến một trang không được tải đầy đủ trước khi nhận được yêu cầu tiếp theo. Tôi chưa có cơ hội để kiểm tra điều đó. Nếu điều đó chứng tỏ là vấn đề tôi sẽ cập nhật. –

+0

Tôi nghĩ bạn cần xem lại câu trả lời đúng – hfossli

Trả lời

115

Tôi có thể tìm thấy câu trả lời here.

chủ đề này chứa mô tả này cho lỗi này: This error may occur if an another request is made before the previous request of WebView is completed...

tôi làm việc này bằng cách bỏ qua lỗi này và để cho webview tiếp tục tải.

if ([error code] != NSURLErrorCancelled) { 
//show error alert, etc. 
} 
+25

Tốt hơn là sử dụng hằng số NSURLErrorCancelled thay vì giá trị bằng -999. – hasseg

+0

điều này đã thay đổi tôi rất nhiều tìm kiếm, cảm ơn! – favo

+3

Lỗi này cũng có thể là một mùi mã. Tôi đã loại bỏ nó không phải bằng cách bỏ qua nó, nhưng bằng cách di chuyển một cuộc gọi phương thức nạp kích hoạt từ 'viewDidAppear' (có thể kích hoạt nhiều lần trong khi tải chế độ xem web) vào' viewDidLoad'. – clozach

28

NSURLErrorCancelled (-999)

"Returned khi một tải không đồng bộ được hủy bỏ. Một đại biểu khung Kit Web sẽ nhận được lỗi này khi nó thực hiện một hoạt động hủy trên một nguồn tài nguyên tải. Lưu ý rằng một NSURLConnection hoặc NSURLDownload đại biểu sẽ không nhận được lỗi này nếu việc tải xuống bị hủy. "

Đối với hoàn cảnh của tôi (và có lẽ bạn) này có thể được bỏ qua:

if([error code] == NSURLErrorCancelled) return; // Ignore this error 
9

Hai câu trả lời ở trên là ĐÚNG> Chỉ cần làm một sự trở lại nếu yêu cầu tải gây hủy.

Ngoài ra tôi muốn chỉ ra rằng, người Đừng quên đặt một NSLog bên didFailLoadWithError phương pháp của bạn, điều này có thể ngăn ngừa mất rất nhiều thời gian bởi đốm vấn đề này ngay trên!

Vì vậy, đây là giải pháp cuối cùng với tất cả tôi đã đề cập ở trên:

-(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error 
{ 
    NSLog(@"ERROR : %@",error); //Get informed of the error FIRST 
    if([error code] == NSURLErrorCancelled) 
     return; 
}