2009-03-03 28 views
5

Tôi muốn viết một số mã để xử lý các ngoại lệ khi kết nối HTTP không thành công. Tôi sử dụng các mã sau:Làm thế nào để bật lên cảnh báo khi kết nối HTTP không thành công trên iPhone?

-(void) connection:(NSURLConnection *)connection 
    didFailWithError: (NSError *)error { 
    UIAlertView *errorAlert = [[UIAlertView alloc] 
        initWithTitle: [error localizedDescription] 
        message: [error localizedFailureReason] 
        delegate:nil 
        cancelButtonTitle:@"OK" 
        otherButtonTitles:nil]; 
    [errorAlert show]; 
    [errorAlert release]; 
    [activityIndicator stopAnimating]; 
    NSLog (@"Connection Failed with Error"); 
} 

Nhưng chương trình chỉ gặp sự cố khi kết nối không thành công. Làm cách nào để cảnh báo bật lên mà không có sự cố chương trình?

+0

Điều này có đang chạy trong chuỗi chính hoặc trong chuỗi nền không? Thao tác các đối tượng UI * trong các chủ đề nền có xu hướng không hoạt động. Ngoài ra, dòng nào xảy ra sự cố xảy ra? Sử dụng trình gỡ rối hoặc di chuyển dòng NSLog xung quanh để tìm hiểu. –

Trả lời

3

Không có gì rõ ràng là sai với mã của bạn, bạn sẽ cần phải cung cấp thêm thông tin.

Đảm bảo bạn có breakpoint on objc_exception_throw và sau đó chạy chương trình trong trình gỡ lỗi. Sau đó, bạn có thể xác định những gì các dòng ngoại lệ được ném.

Dự đoán hoang dã, nhưng có lẽ [error localizedDescription] hoặc [error localizedFailureReason] đang quay lại nil.

+0

Phương thức 'didFailWithError' thậm chí không được gọi khi tôi sử dụng sai địa chỉ. có ai biết tại sao việc này lại xảy ra? –

+0

Có thể nó không thất bại? Nếu bạn nhận được phản hồi từ máy chủ, tôi * nghĩ * được tính là thành công, ngay cả khi đó là phản hồi 404 Không tìm thấy. – benzado

+0

Không làm trống với url sai? Sau đó, làm cách nào để thêm cảnh báo cho url sai? Tôi có nghĩa là phương pháp nào tôi nên sử dụng? –

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