2012-02-08 33 views
13

Tôi cần phải xóa đối tượng Null được thêm bởiLàm cách nào để có thể xóa các đối tượng [NSNull Null] khỏi NSMutableArray?

[mutArrSkills addObject:[NSNull null]]; 

Tôi có cần lặp lại không? Có chức năng để loại bỏ tất cả các giá trị null từ NSMutableArray?

Nếu cần lặp lại, tôi sẽ làm như thế nào?

+1

removeObjectIdenticalĐể cũng sắp xếp mảng, vậy tại sao bạn không tự làm nghiêng bản thân. –

Trả lời

30

Bạn có thể sử dụng phương pháp removeObjectIdenticalTo:NSMutableArray 's, như sau

[mutArrSkills removeObjectIdenticalTo:[NSNull null]]; 

để loại bỏ các giá trị null. Không cần phải lặp lại.

+0

Aure bạn chắc chắn? Tôi không phải vì 'Các đối tượng được coi là giống hệt nhau nếu địa chỉ đối tượng của chúng giống nhau.'. Như bạn đã biết, '[NSNull null]! = [NSNull null]' ... – Nekto

+0

Có, theo như liên quan trong trường hợp này, các phần tử được thêm vào bởi '[mutArrSkills addObject: [NSNull null]];' đã xóa bằng cuộc gọi đó. – Ilanchezhian

+0

Yes.it đang hoạt động tốt – Heena

1

removeObjectIdenticalTo:

Loại bỏ tất cả các lần xuất hiện của một đối tượng nhất định trong mảng.

Thảo luận Phương pháp này sử dụng phương pháp indexOfObjectIdenticalTo: để xác định vị trí khớp và sau đó loại bỏ chúng bằng cách sử dụng removeObjectAtIndex :. Vì vậy, các trận đấu được xác định bằng cách sử dụng địa chỉ đối tượng. Nếu mảng không chứa anObject, phương thức này không có hiệu lực (mặc dù nó không phải trả phí cho việc tìm kiếm nội dung).

+0

Aure bạn chắc chắn? Tôi không phải vì 'Các đối tượng được coi là giống hệt nhau nếu địa chỉ đối tượng của chúng giống nhau.'. Như bạn nên biết, '[NSNull null]! = [NSNull null]' ... – Nekto

+0

@Nekto xin tham khảo câu trả lời của tôi. – sElanthiraiyan

-1

Bạn có thể lặp lại như thế này.

for(int i=0,i<[mutArrSkills count]; i++) 
{ 
    if([[mutArrSkills objectAtIndex:i] isKindOfClass:[NSNull Class]]) 
    { 
    [mutArrSkills removeObjectAtIndex:i]; 
    } 
} 
+2

Điều đó không có tác dụng gì cả nếu bạn có hai đối tượng NSNull kế tiếp trong mảng. – gnasher729

1

Bạn có thể thử làm điều này,

NSNull *nullValue = [NSNull null]; 

[mutArrSkills removeObjectIdenticalTo:nullValue]; 

Tôi hy vọng điều này sẽ giúp.

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