Câu hỏi nhanh - có thể đưa NSInteger vào đối tượng NSNumber không? Tôi cần phải chuyển đổi thẻ của một đối tượng UIImageView thành một đối tượng NSNumber bởi vì tôi cần truyền nó như một đối số cho một hàm.Có thể bỏ NSInteger vào NSNumber không?
Trả lời
Bạn không thể truyền vì NSInteger
không phải là đối tượng, chỉ là bí danh cho loại được cài sẵn. Bạn luôn có thể tạo ra một đối tượng mới NSNumber
từ NSInteger
, như thế này:
NSNumber *myNum = @(myNsIntValue);
hoặc trong phiên bản trước của trình biên dịch, sử dụng
NSNumber *myNum = [NSNumber numberWithInteger:myNsIntValue];
Câu trả lời này tạo ra cảnh báo về các thiết bị 64 bit mới. Vui lòng xem câu trả lời chính xác hơn của @ Kevin bên dưới. –
@FullDecent Đã chỉnh sửa, cảm ơn! – dasblinkenlight
Đây là câu trả lời chính xác hơn và nó sẽ không tạo ra bất ngờ lỗi.
NSNumber *myNum = [NSNumber numberWithInteger:myNsIntValue];
Do doc cho biết:
"numberWithInteger:. Tạo và trả về một đối tượng NSNumber chứa một giá trị nhất định, xử lý nó như một NSInteger"
"numberWithInt: Tạo và trả về đối tượng NSNumber có chứa giá trị đã cho, coi nó là int đã ký".
từ Apple LLVM Compiler 4.0
, có một cách dễ dàng hơn để tạo NSNumber
đối tượng:
NSNumber *x = @1234;
NSNumber *y = @(anIntegerVariable);
NSNumber * z = @ (aDoubleValue); cũng hoạt động tốt. – gnasher729
- 1. int vs NSNumber vs NSInteger
- 2. Chuyển đổi NSNumber để NSInteger
- 3. Nối NSInteger vào NSMutableData
- 4. kiểm tra xem NSNumber có trống không
- 5. thêm đối tượng NSInteger để NSMutableArray
- 6. NSInteger! = Nil
- 7. Không thể lấy giá trị dài chưa ký của NSNumber
- 8. NSNumber vs Int
- 9. Có thể sử dụng NSArray, NSDictionary và NSNumber "literals" trong Xcode 4.3 không? (LLVM 4.0)
- 10. NSNumber từ CGFloat
- 11. NSNumber và NSTimeInterval
- 12. Số học NSNumber
- 13. Tại sao chúng ta có thể bỏ sockaddr vào sockaddr_in
- 14. Tổng hai NSInteger cho kết quả không chính xác
- 15. Chuyển đổi NSInteger thành NSIndexpath
- 16. ràng buộc NSTextField với NSNumber
- 17. Bỏ qua SVN bỏ qua ... có thể?
- 18. Chuyển đổi NSString thành NSInteger?
- 19. Kiểm tra xem NSInteger có lẻ hay thậm chí
- 20. insertNewObjectForEntityForName: inManagedObjectContext: return NSNumber bug?
- 21. NSPredicate, NsNumber numberWithFloat: 0.0 (iPhone)
- 22. Tôi có thể yêu cầu các bộ tìm kiếm bỏ qua các lớp mà tôi không thể thêm vào không?
- 23. NSDate chuyển thành NSNumber MYSTERY
- 24. Cách in giá trị NSInteger từ NSManagedObject bằng NSLog
- 25. Tại sao tôi không khai báo NSInteger với số *
- 26. Nút gửi có bevel Tôi không thể loại bỏ
- 27. Tôi có nên bỏ vào trang lambda của mình hoặc bỏ IEnumerable không?
- 28. Tôi có cần phân bổ rõ ràng NSNumber của mình không?
- 29. Bạn có thể "bỏ qua" một tệp trong Perforce không?
- 30. Làm cách nào để khai báo dài trong Objective-C? NSInteger có thích hợp không?
Nó hoàn toàn có thể bỏ một NSInteger một NSNumber *. Kết quả sẽ rất có thể dẫn đến sự cố. Tất nhiên nếu bạn có một số x, bạn có thể sử dụng @ (x) để tạo một đối tượng NSNumber với giá trị x. Mà sẽ làm việc, nhưng không phải là một diễn viên. – gnasher729