100 days of swiftui: 3
https://www.hackingwithswift.com/100/swiftui/3
var cats: [String] = []
var cats1 = Array<String>()
var cats2 = [String]()
var fruits = ["Apple", "Banana", "Croissant", "Dragon fruit", "Papaya"]
위처럼 같은 데이터 타입의 데이터 그룹이 배열이다. 1 ~ 3줄처럼 빈 배열을 선언할 수 있고, fruits처럼 직접 값을 입력하여 정의할 수도 있다.
cats.append("cheese")
cats.append("tuxedo")
cats.append("chaos")
print(cats)
print(cats[0])
var fruits = ["Apple", "Banana", "Croissant", "Dragon fruit", "Papaya"]
fruits.remove(at: 2)
print(fruits)
print(fruits.count)
print(fruits.contains("Papaya"))
fruits = fruits.reversed()
print(fruits)
fruits.sort()
print(fruits)
fruits.removeAll()
print(fruits)
append, sort, remove 등 다양한 method도 있다. reversed()
는 직접적으로 데이터에 변화를 주지 않기 때문에, reversed된 배열을 다루고 싶다면 데이터에 저장해야 한다. swiftui에서는 reversed()
가 직접 배열의 구조를 재배열하는 것이 아니라 순서가 바뀌었다는 것을 기억한다고 한다.
코드 파일
https://github.com/soaringwave/Ios-studying/blob/main/daysOfSwiftUIBasic.playground/Contents.swift
var someone = [String: String]()
someone = [
"name": "ein person",
"country": "deutschland",
]
print("someone is called ", someone["name"], ", and lives in ", someone["country"], ".")
someone["hobby"] = "Judo"
someone["country"] = "한국"
print(someone)
print(someone["types", default: "unknown"])
print(someone["swift"])
사전은 key와 value 값을 가진다. 정의할 땐 [key: value]
를 작성해야 한다. key는 한 가지 값만 가질 수 있기 때문에, value를 수정한다면 기존 입력한 value를 덮어씌운다.
배열과는 달리 index가 아닌 key를 사용하기 때문에 해당 dictionary의 key에 해당하는 값이 없을 수도 있다(Optional). 이를 방지하기 위해 default
를 설정할 수 있다. 이 경우엔(마지막 줄) nil이 return된다.
코드 파일
https://github.com/soaringwave/Ios-studying/commit/308c869efb2aaa2b0a652c9a16dffbc70e507d4b
var animals = Set<String>()
animals = Set(["cat", "dog", "dog", "pig", "cow", "cow", "cow"])
print(animals)
animals.insert("chicken")
print(animals)
print(animals.count)
print(animals.contains("donkey"))
print(animals.sorted())
set은 배열과 달리 순서가 없고, 유일한(중복되지 않게) 데이터 그룹이다. 덕에 중복을 확인하거나, 값을 찾거나, 순서가 필요없을 때 배열보다 효율적으로 사용할 수 있다.
set을 sorted()
하면 정렬된 배열을 return한다.
코드 파일
https://github.com/soaringwave/Ios-studying/commit/d985c78ce5fdd043bbf2997c766dc05a2e18ab75
enum Month {
case January
case February
case March
case April
case May
case June
case July, August, September, October, November, December
}
var thisMonth = Month.April
thisMonth = .May
enum은 내가 미리 지정해둔 값이라고 생각하면 된다. 만약 현재 몇 월인지 저장하는 thisMonth
에 직접 "April"이라고 값을 지정한다고 해보자. 그러나 사소한 오타가 발생하는 순간 내가 의도한 값이 되지 않아 나중에 프로그램에 문제가 생길 수도 있다. 그리고 그 에러를 발견하기 어려울 수도 있다.
이를 방지하기 위해 enum을 이용해 내가 지정한 case를 설정하고, 그 case만이 사용할 수 있다. 사용할 때는 enumName.case
를 입력하면 된다. 그리고 한 번 변수에 값이 할당되면 데이터 타입이 고정되기 때문에 선언이나 정의 이후엔 .case
만 작성해도 된다.
코드 파일
https://github.com/soaringwave/Ios-studying/commit/8c46ee57cecea7c503c597f49aca3236c2d422e2