Collection

Youn·2021년 8월 18일
1

iOS-Swift

목록 보기
6/11
post-thumbnail

swift collection 을 주로 사용 (값 형식)
foundation collection 은 참조 형식

Array

  • 순서 ⭕
  • 요소들의 자료형 동일
  • shuffle() → 요소 순서 랜덤으로 바꿈

Dictionary

  • 순서 ❌
  • [key: value, ... ]
  • [:] // 빈 딕셔너리. : 필수!!
  • 형지정
let dict1: Dictionary<String, Int>    //정식문법
let dict2: [String:Int] // 단축문법
let emptyDict: [String: String] = [:]
let emptyDict2: [String:String]()
let b = dict1[key, default: "Empty"] // 무조건 string. optional string X 
// -> 전달한 key 가 존재하지 않을 경우 기본값 "Empty" return
  • key, value 별개 출력 가능
-- key -- 
for k in words.keys {   //words.keys.sorted() 하면 정렬됨
  print(k)
 }
-- value -- 
for v in words.vlaues {
  print(v)
 }
 
-- 배열로 변환 --
let keys = Array(words.keys)
let values = Array(words.values)
  • 정렬되지 않은 collection
  • 딕셔너리 검색
let words = ["A": "Apple", "B": "Banana", "C": "City"]
let c: ((String, String)) -> Bool = {
	$0.0 == "B" || $0.1.contains("i"). //key 에 B or 값에 소문자 i
}
words.contains(where: c)
words.first(

Set

  • 동일한 형, single unique value
  • Hashing algorithm 사용 → 배열에 비해 검색 속도⬆️
  • 정렬❌
  • 자료형 직접 지정해줘야 배열아닌 set
let set: Set<Int> = [1,1,2,3,4,3]
set.count // 4
set.contains(1) //true
  • 동일성 비교할때는 셋보다는 배열이 나음
  • 집합연산
a.isSubset(of: a)
a.isStrictSubset(of: a) // 진부분집합
등등 많으니까 필요한거 검색해보고 하자

🔵 Iterating Collections

  • 배열
let arr =[1, 2, 3]
for num in arr {
   ...1, 2, 3 나옴...
}
arr.forEach {(num) in}
  • set
let set: Set = [1, 2, 3]
for num in set {
	...정렬되지 않았기 때문에 실행할 때 마다 순서 달라짐 
}
forEach 가능
  • dictionary
let dict = ["A": "apple", "B": "Banana"]
for (key, value) in dict {
	...열거 순서 랜덤...
}
forEach 가능

📌 for in 과 forEach 의 차이점

  • for in

    • 반복문
    • 내부에서 break, continue 사용⭕
    • 내부에서 return 하면 함수 전체 종료
  • forEach

    • break, continue 사용❌
    • closure 내부의 return 은 외부함수와 반복횟수에 영향❌, 실행중인 클로저를 종료할 뿐
profile
youn

0개의 댓글