iOS/코드조각

[iOS, Swift] Any to String 형변환

검은참깨두유vm 2023. 3. 22. 18:45
반응형

iOS 15.5, Xcode 13.31, Swift 5, UIKit 환경에서 진행했습니다.

 

let text: String = String(describing: sender.userInfo!["text"]!)

Notification userInfo 타입이 [AnyHashable: Any]? 이어서 밸류 값 Any 타입을 형변환 해주었습니다.

 

위 코드에서 `sender.userInfo!["text"]!` 부분은 Notification 객체에서 userInfo 딕셔너리로부터 "text" 키에 해당하는 값을 가져오는 부분입니다. 그러나 이 값은 Any 타입으로 반환됩니다. Any 타입은 Swift의 모든 타입을 나타낼 수 있는 타입으로, 타입 안정성을 보장하지 않습니다. 따라서 이 값을 String으로 사용하려면 Any 타입을 String 타입으로 형변환해주어야 합니다.

Notification은 iOS에서 발생하는 이벤트를 다른 객체에게 알리기 위한 메커니즘을 제공합니다. userInfo는 Notification 객체에 추가적인 정보를 담을 수 있는 딕셔너리입니다. 이 딕셔너리의 키는 AnyHashable 타입, 값은 Any 타입이 될 수 있습니다. 따라서 이 딕셔너리에서 값을 추출하여 사용할 때에는 타입 안정성을 고려하여 형변환을 해주어야 합니다.

AnyHashable은 Swift의 모든 타입을 나타낼 수 있는 해시 가능한(any hashable) 타입입니다. 이 타입은 딕셔너리의 키로 사용될 수 있습니다. Any 타입은 Swift의 모든 타입을 나타낼 수 있는 타입이지만 해시 가능하지 않은 타입이 존재할 수 있습니다. 따라서 Any 타입은 딕셔너리의 키로 사용될 수 없습니다.

위 내용을 바탕으로, iOS 앱 개발에서 Notification 객체와 userInfo 딕셔너리를 사용할 때, Any 타입과 AnyHashable 타입의 차이점을 이해하고 타입 안정성을 고려하여 적절한 형변환을 수행해야 합니다.

반응형