2009-10-13 16 views

Trả lời

103

Nhìn vào các tài liệu NSError nói với tôi rằng bạn sẽ cần phải làm một cái gì đó như:

NSLog(@"%@",[error localizedDescription]); 

Điều này sau đó sẽ cho bạn kết quả có thể đọc được con người

+2

Vâng, trước tiên, anh ta cần có lỗi để có mô tả. Và 'mô tả' của lỗi sẽ (hiện tại) ít nhất chứa tên miền và mã của lỗi, điều này có thể hữu ích hơn trong một thông điệp tường trình console. –

+0

Cảm ơn, tôi đã nhìn thấy chức năng này, nhưng tôi không hiểu tại sao nhật ký lại cho tôi (null). –

19
NSLog(@"Error: %@", error); 

Cung cấp cho tôi một tin nhắn vô

Sau đó errornil, không phải là một ví dụ NSError.

+0

Cảm ơn, điều này giúp ích rất nhiều. Tôi nghĩ tôi đã làm sai điều gì đó. Cách tốt nhất để đăng nhập một lỗi là gì? –

+0

Anh ta cũng không cần phải coi trọng 'NSError **'? – fbrereto

+1

Câu hỏi ban đầu không có hai dấu hoa thị. Abizern thêm dấu hoa thị thứ hai; Tôi đã quay lại bản chỉnh sửa của anh ấy, bởi vì tôi không nghĩ rằng nó có ý nghĩa đối với câu hỏi thực tế. Nếu nó là một đối số dấu hoa thị kép, thì nói chung (đặc biệt là đối với một NSError) là một đối số * output *, vì vậy phương thức không nên cố gắng truy xuất một đối tượng thông qua con trỏ đó. –

2

Dưới đây là một phương pháp thô tôi sử dụng để đăng nhập lỗi trong khi phát triển; (Không phải cho ca cao chạm)

// Execute the fetch request put the results into array 
NSError *error = nil; 
NSArray *resultArray = [moc executeFetchRequest:request error:&error]; 
if (resultArray == nil) 
{ 
    // Diagnostic error handling 
    NSAlert *anAlert = [NSAlert alertWithError:error]; 
    [anAlert runModal]; 
} 

NSAlert sẽ xử lý lỗi.

+2

Tất nhiên, điều đó chỉ hữu ích trên máy Mac. UIKit không có NSAlert. –

+0

Vâng! Tôi đã không đọc các thẻ. Cảm ơn bạn đã khôi phục nội dung chỉnh sửa. Tôi vẫn nghĩ rằng câu trả lời này rất hữu ích để bỏ lại cho người khác, miễn là họ lưu ý nó chỉ dành cho máy tính để bàn. – Abizern

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