2010-03-13 28 views
13

tôi tiếp tục nhận được 'cảnh báo: kiểm soát đạt hết chức năng không trống' với mã này:Cảnh báo: kiểm soát đạt cuối phi void function - iPhone

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 

if (section ==0) 

{ 
    return [comparativeList count]; 
} 

if (section==1) 
{ 
    return [generalList count]; 
} 

if (section==2) 
{ 

    return [contactList count]; 

Làm thế nào tôi có thể thoát khỏi cảnh báo này?

Cảm ơn.

Trả lời

57

Thêm return 0; vào cuối phương thức của bạn. Về cơ bản nó là một failsafe, nếu không có điều kiện nào trong số các điều kiện if được đáp ứng.

Nếu bạn muốn đảm bảo một trong các điều kiện được đáp ứng, return -1; sẽ khiến ứng dụng đưa ra ngoại lệ và sự cố, điều này có thể giúp bạn theo dõi lỗi.

Bạn cũng có thể xem xét sửa đổi phương pháp này và thay thế các câu hỏi if bằng cây switch-case. Với cây switch-case, bạn có thể dễ dàng thêm các phần mới và sắp xếp lại thứ tự của chúng trong một UITableView. Mã trở nên dễ đọc bằng cách sử dụng các quy ước đặt tên hợp lý.

Thực sự dễ dàng; Fraser Speirs có good explanation on how to set this up.

+0

+1, các Ops cảnh báo thực tế là khả năng "kiểm soát đạt cuối phi ** void function **". –

+0

Vâng, về cơ bản bất kỳ phương pháp hoặc chức năng nào nói rằng nó sẽ trả về một cái gì đó phải trả về một cái gì đó. Vì không có đảm bảo rằng bất kỳ điều kiện 'if' nào sẽ được đáp ứng, có thể không có gì sẽ được trả về. –

+0

Cảm ơn rất nhiều nó đã làm việc độc đáo, và lời giải thích của bạn cũng rất hữu ích. Tôi thực sự đánh giá cao thời gian của bạn :) – Dave

4

Một lựa chọn:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 

    if (section ==0) { 
     return [comparativeList count]; 
    } else if (section==1) { 
     return [generalList count]; 
    } 
    // section == 2  
    return [contactList count]; 
} 
Các vấn đề liên quan