Theo tài liệu Swift 3, NSNumber được bắc cầu với các kiểu gốc Swift như Int, Float, Double, ... Nhưng khi tôi thử sử dụng kiểu gốc trong Từ điển tôi nhận được lỗi biên dịch được cố định khi sử dụng NSNumber, tại sao vậy? Đây là mã của tôi:NSNumber vs Int, Float trong từ điển Swift
var dictionary:[String : AnyObject] = [:]
dictionary["key"] = Float(1000)
và trình biên dịch đưa ra lỗi "Không thể gán giá trị kiểu Float cho AnyObject". Nếu tôi viết mã như sau, không có vấn đề gì vì NSNumber thực sự là một kiểu đối tượng.
dictionary["key"] = NSNumber(value:Float(1000))
Swift trình biên dịch cũng nhắc nhở để sửa chữa các mã như
dictionary["key"] = Float(1000) as AnyObject
nhưng tôi không chắc chắn nếu nó là điều đúng để làm hay không. Nếu thực sự có một cầu nối giữa NSNumber và các kiểu bản địa (Int, Float, vv), tại sao trình biên dịch buộc phải định kiểu cho AnyObject?
liên quan: http://stackoverflow.com/questions/39321421/working-with-nsnumber-integer-values-in-swift- 3 –