Làm cách nào để kiểm tra xem NSInteger có hợp lệ không?NSInteger! = Nil
NSInteger previousScore = [[self score] integerValue];
if (previousScore != nil) {
//do something
}
Làm cách nào để kiểm tra xem NSInteger có hợp lệ không?NSInteger! = Nil
NSInteger previousScore = [[self score] integerValue];
if (previousScore != nil) {
//do something
}
Nếu bạn muốn kiểm tra tính hợp lệ trong mã của bạn, bạn muốn làm điều gì đó như:
NSNumber *previousScore = [self score];
if (previousScore != nil) {
NSInteger previousScoreValue = [previousScore integerValue];
// do something
}
này hoạt động như bạn đang nhận lại một đối tượng, không phải là một giá trị nguyên thủy.
Cảm ơn. Ý tưởng tuyệt vời. Tôi đọc vào và ra khỏi plist vì vậy tất cả mọi thứ trong mảng phải được NSNumber. – intomo
NSInteger
không phải là một đối tượng. Nó chỉ đơn giản là một nguyên mẫu được nhập sẵn int
. Do đó, nó sẽ không bao giờ là nil
. Chỉ cần đối xử với nó giống như khi bạn đang sử dụng int
thẳng lên.
Edit: Để expound khi bình luận của Cesar, trên các hệ thống 64-bit NSInteger
thực sự là một long
và trên các hệ thống 32-bit nó là một int
.
được định nghĩa là: #if __LP64__ typedef long NSInteger; #else typedef int NSInteger; endif –
Thực ra theo mặc định trong nhiều trường hợp, NSInteger sẽ là nil, vì nil giống với số không ... bạn cũng có thể nhận được cảnh báo trình biên dịch. Trong mã mẫu cho trướcScore sẽ là 0 (nil) nếu [tự điểm] trở lại nil ... –
không may, nil là 0. hãy thử "po nil == 0" trong trình gỡ lỗi. Nó in "true" – nont
lời chào đã xóa: "Cảm ơn bạn trước"., Đừng làm điều đó vào lần sau –