티스토리 뷰
안녕하세요 :) Zedd입니다.
이런걸..발견해서...바로 NSCountedSet!!!!이게 뭔가 할 수도 있겠지만...뭔지 차근차근 알아봅시다.
먼저 Swift의 Set을 잘 모르신다면 <Collection - Set>글을 읽고와주세요 :)
NSCountedSet
일단 Set!!!! Set이네요. Collection이겠죠?
근데 Counted?뭔가 개수를 센?????뭔가 개수와 관련있는 Set같아 보이는데...
맞습니다!!!
Set의 특징은..일단 순서가없고!! 중복된 값이 없다는게 특징이죠?
근데 만약에 내가!!!내가 이 Set에 어떤값이 몇번들어갔는지를 알고싶다!!!하면 이 NSCountedSet을 쓰면 됩니다.
Q : 아니 Set자체가 일단 중복된 값이 안들어가는데 몇번 들어갔는지 알 수가 있나;;;;;;걍 한번으로 치는거 아닌가;;;
A : 네!! Set자체가 그렇긴 하지만...그 개수를 셀 수 있도록 해주는것이 NSCountedSet입니다.
예제를 볼게요.
let myCountedSet = NSCountedSet()
먼저 선언을 이렇게 해주시면 된답니다. Set에 값을 넣는거는 보통 insert나 update였잖아요?
이 NSCountedSet에는 add라는 메소드로 값을 넣어주게 됩니다.
myCountedSet.add("Zedd")
이렇게요! 그리고 NSCountedSet은 기본적으로 Any타입이라..
myCountedSet.add("Zedd")
myCountedSet.add(1)
이렇게 타입을 막 넣어도 된답니다.
class Rect{
init(){}
}
let rect = Rect()
myCountedSet.add("Zedd")
myCountedSet.add(1)
myCountedSet.add(rect)
이것도 물론 가능. 왜냐? Any니까 ㅇㅇ
자..아무튼 이게 NSCountedSet은 아니고!! 이제 해봅시다.
myCountedSet.add("Zedd")
myCountedSet.add("Zedd")
제 NSCountedSet에 "Zedd"를 넣게되면!! 제 NSCountedSet. 즉 myCountedSet은 뭐가 들어있을까요?
네!! Set의 특징에 따라 {"Zedd"}. 중복된 값이 없으니까요.
즉 제가 Zedd를 두번넣어도 하나의 값만 들어가게 됩니다.
그렇지만!
let zeddCount = myCountedSet.count(for: "Zedd")
이렇게 count메소드를 호출해서 파라미터로 내가 개수를 찾고싶은 값을넣어주면!!!!!
2라는 값이 나오게됩니다. 비록 myCountedSet에는 {"Zedd"}이지만!!! count는 2가 나오게 됩니다 :)
이것이 바로 NSCountedSet의 특징이에요.
별거없죠 ㅎ..........
물론 [String:Int]타입의 Dictionary를 만들어서 해당 key가 몇번을 나왔는지 value로 증가시켜도 되지만... NSCountedSet을 사용하면 별다른 코드없이 알아서 개수를 세주니까...좋을 것 같아요 :)
그리고 Dictionary에서는 Hashable프로토콜을 따르는 타입만 올 수 있었죠!! NSCountedSet은 다 올 수 있다는거? 하지만 개수를 찾을 때, 해당 타입의 개수가 몇개냐ㅑㅑ 이런거는 안된다는거.....XD
저는 항상 뭐 어떤 값이 몇번나오냐 이런거를 매번 Dictionary로 했었는데!!! NSCountedSet도 사용하면 좋을 것 같아요 :)
'Swift' 카테고리의 다른 글
Swift ) DateDecoding(Encoding)Strategy (1) | 2018.01.23 |
---|---|
Swift ) 왕초보를 위한 Codable - CodingKey (5) | 2018.01.23 |
Swift ) Access Control(접근제어) - (2) (1) | 2018.01.17 |
Swift ) Sequences와 Lazy (2) | 2018.01.16 |
Swift ) Inheritance(상속) (7) | 2018.01.15 |
- IOS
- Xcode
- github
- swift array
- swift tutorial
- FLUTTER
- 회고
- Git
- swift sort
- 스위프트 문법
- Swift
- 스위프트
- swift3
- fastlane
- actor
- np-hard
- swift 공부
- 피아노
- ios 13
- swift delegate
- UIBezierPath
- iOS delegate
- np-complete
- Combine
- SwiftUI
- 제이슨 파싱
- WKWebView
- WWDC
- WidgetKit
- Accessibility
- Total
- Today
- Yesterday