* Any, AnyObject 차이
- Any는 포괄적인 개체들을 말하는것으로 Objective-C의 id와 동일하며
Java에서 Object클래스와 비슷하다.
- AnyObject는 모든 클래스를 말하며 클래스에만 한정된다.
* === 연산자
Objective-C에는 없는 연산자로
2개의 객체가 완전 동일한지를 비교한다. 즉, 주소가 동일한 완전히 동일한 객체인지 비교
- 다만 Swift3에서 변경된 사항으로 AnyObject의 Optional Type으로 캐스팅해야 비교가 가능하다.
override func draggingEntered(_ sender: NSDraggingInfo) -> NSDragOperation {
if sender.draggingSource() as AnyObject? === self {
return NSDragOperation()
}
highlightForDragging = true
return sender.draggingSourceOperationMask()
}
* typeOf 타입비교
- Generic Type 까지 비교한다.
var dic1:Any = [String : String]()
var dic2 = [String : Int]()
if type(of: dic1) == Dictionary<String,Int>.self {
Swift.print("Dictionary<String,Int>")
} else {
Swift.print("Not Dictionary<String,Int>")
}
* if is 타입비교
- Swift3에서는 제너릭 타입을 지정해야 한다. 하지만 제너릭타입까지는 비교하지 않는다.
- 필요없는데 왜 붙여야 하는걸까요? ㅜㅠ
var dic1:Any = [String : String]()
var dic2 = [String : Int]()
if dic1 is Dictionary<String,String> {
NSLog("Dictionary OK")
} else {
NSLog("Not Dictionary")
}
* Dictionary Type의경우 == 연산자로 비교
- 특이하게 Swift에서는 == 연산자로 Dictionary가 가지고 있는 값의 내용이 비교된다.
var dic1:Any = [String : String]()
var dic2 = [String : Int]()
dic1["aa"] = "bb"
dic2["aa"] = "bb"
if dic1 == dic2 {
NSLog("Dictionary content equal")
} else {
NSLog("Dictionary content Not equal")
}
'Mobile-아이폰iOS' 카테고리의 다른 글
iOS Cordova 사용시 NSURLConnection finished with error - code -1100 오류 해결 - 하이브리드앱 (0) | 2019.06.18 |
---|---|
2010년 출시 구닥다리 iOS 앱 업데이트 하기 (0) | 2017.08.27 |
iOS UIWebview에서 에러 발생시 reload 처리하기 (0) | 2017.06.30 |
Swift 3.0부터 open과 fileprivate라는 새로운 접근한정자 추가 (0) | 2017.06.03 |
Android - iOS String Resource Converter 문자열관리 파일포맷 변환기 (0) | 2017.04.03 |