Type casting ์ ์ฌ์ฉ๋๋ ๊ตฌ๋ฌธ์ ์์๋ณด์.
is
๋ฐ์ดํฐ ํ์ ํ์ธ์ฉ
let cell = UITableViewCell()
if cell is UITableViewCell {
print("The types match!")
}
as?
๋ค์ด์บ์คํ ์ ํ์ธํ๊ณ ๋ณํํ๋ ๊ฒ. ์ฃผ๋ก if ๋ฌธ๊ณผ ํจ๊ป ์ฌ์ฉํจ.
if let messageCell = cell as? MessageCell {
//Then can use messageCell's capabilities
}
as!
๋ฐ์ดํฐ ํ์ ์ ์๋ธ ํด๋์ค๋ก ๋ณํ
๊ฐ์ ๋ค์ด ์บ์คํ . Forced Downcast
let messageCell = cell as! MessageCell
as
ํ์ ์ ์ํผ ํด๋์ค๋ก ๋ฐ๊พธ๋, ํญ์ ์ณ์ Upcast
let newCell = messageCEll as UITableViewCell
Object ์ ๋ฐ์ดํฐ ํ์ ์ ์์๋ณด์.
Any (All obejcts) > AnyObject (Objects derived from classes) > NSObject (Foundation objects) ์์ผ๋ก ํฌํจ๋๋ค.
์ฐธ๊ณ ๋ก Swift ์์ String, Int ์ ๊ธฐ๋ณธํ์ ์ Struct ์ด๋ค.
์ฆ let objectTests: [Any] = [Int, String, String] ์ ๊ฐ๋ฅํ๋ฐ
let obejctsTests: [AnyObject] = [Int, Stirng, String] ์ ๋ถ๊ฐ๋ฅํ๋ค.
Any
๋ชจ๋ ํ์ ์ ์ธ์คํด์ค๋ฅผ ๋ํ๋ผ ์ ์๋ค.
AnyObject
๋ชจ๋ ํด๋์ค ํ์ ์ ์ธ์คํด์ค๋ฅผ ๋ํ๋ผ ์ ์๋ค.
NSObject
Object์ ์ต์๋จ ๋ฃจํธ ํด๋์ค.
https://docs.swift.org/swift-book/documentation/the-swift-programming-language/typecasting/