Tôi muốn có một NSSet đơn giản được nạp với một số NSNumbers và sau đó tìm hiểu xem những con số đó đã được thêm vào trong bộ hay chưa. Khi tôi làm điều này:NSSet của NSNumbers - phương pháp thành viên luôn là nil
NSMutableSet *set = [[NSMutableSet alloc] init];
NSNumber *num1 = [NSNumber numberWithInt:5];
NSNumber *num2 = [NSNumber numberWithInt:5];
[set addObject:num1];
if([set member:num2]){
// something...
}
Vấn đề là thành viên luôn trả về nil (nếu là sai), ngay cả khi các số đó giống nhau. Phương thức isEqual trả về true. Vì vậy,
if([num1 isEqual:num2]){
// correct
}
công trình ...
Trong tài liệu tôi đọc rằng phương pháp thành viên sử dụng isEqual vì vậy tôi không biết vấn đề là gì ... Cảm ơn lời khuyên.
nếu mã của bạn được dán chính xác - bạn không thêm đối tượng num2 vào tập hợp – Maggie
của bạn là bạn chắc chắn .. mã của bạn đang hoạt động hoàn toàn tốt cho tôi! – Devarshi
@Maggie vâng tôi chắc chắn, điểm là tôi muốn kiểm tra xem số 5 đã có trong bộ chưa, nhưng tôi phải dùng nsnumber vì chúng là đối tượng, vì vậy tôi muốn kiểm tra xem đối tượng nsnumber có giá trị là 5 không đã có trong tập (num1 với giá trị 5 là, vì vậy nó phải trả về true) – haluzak