3: complex data types 1

그루두·2024년 4월 10일
0

100 days of SwiftUI

목록 보기
4/108

100 days of swiftui: 3
https://www.hackingwithswift.com/100/swiftui/3

array

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

dictionary

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

set

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

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

profile
계속 해보자

0개의 댓글

관련 채용 정보