Swift 3 설명서에 따르면 NSNumber는 Int, Float, Double 등의 Swift 기본 유형에 연결됩니다. 그러나 사전에서 기본 유형을 사용하려고하면 컴파일 오류가 발생합니다. NSNumber를 사용하면 문제가 해결됩니다. 그 이유는 무엇입니까? 여기 내 코드입니다 :NSNumber 대 Int, Swift 사전의 부동
var dictionary:[String : AnyObject] = [:]
dictionary["key"] = Float(1000)
및 컴파일러는 "AnyObject에 Float 형의 값을 할당 할 수 없습니다"오류를 제공합니다. 다음과 같이 코드를 작성하면 NSNumber가 실제로 객체 유형이므로 아무런 문제가 없습니다.
dictionary["key"] = NSNumber(value:Float(1000))
스위프트 컴파일러는
dictionary["key"] = Float(1000) as AnyObject
로 코드를 수정하라는 메시지 만이 할 여부를 위해 올바른 일이 있는지 확실하지 않다. 실제로 NSNumber와 기본 유형 (Int, Float 등) 사이에 브리징이있는 경우 컴파일러 강제로 AnyObject로 유형 변환 할 수 있습니까?
관련 : http://stackoverflow.com/questions/39321421/working-with-nsnumber-integer-values-in-swift- 삼 –