Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- enum
- cancelAsyncWrite
- 열거형
- switch
- RawValue
- 독학
- Threading
- 함수
- 문자열 보간법
- 패스트캠퍼스
- Realm
- 30개프로젝트로배우는iOS앱개발withSwift초격자패키지Online
- beginAsyncWrite
- ios
- Background
- 프로퍼티 관찰자
- 인스펙터
- 패스트캠퍼스후기
- 패캠챌린지
- TableView
- SeSAC
- Optional Chaining
- userDefaults
- swift
- 직장인자기계발
- xcode
- 기본문법
- 옵셔널 체이닝
- Git
- 직장인인강
Archives
- Today
- Total
아삭아삭 iOS 개발
[Swift 독학] 패스트캠퍼스 챌린지 24일차_프로퍼티 래퍼 본문
■ 프로퍼티 래퍼 (Property Wrappers)
- 프로퍼티 래퍼는 래핑된 값을 저장하는 역할 수행
→ 쓰레드 안정성 검사할때 사용
→ 기본 데이터를 데이터베이스에 저장하는 프로퍼티가 있는 경우 사용 - 프로퍼티 저장방법 관리코드와 프로퍼티 저장코드 사이에 추가
- wrappedValue 프로퍼티를 정의하는 구조체/열거형/클래스 생성하여 정의
- 프로퍼티 래퍼 관리코드는 한 번 작성한 후, 여러 프로퍼티에 적용해서 재사용 가능
→ 프로퍼티 래퍼를 사용하여 다른 여러 프로퍼티의 get구문과 set구문에서 코드를 재사용 가능
스위프트 문법 사이트[1]에 나온 예시를 응용하여 아래와 같이 HundredOrLess 프로퍼티 래퍼를 작성해보았다.
100세 시대니까 100세 이하까지는 stillyoung하다는 것으로 newvalue에 할당된 숫자들을 검사하는 과정~
정말 변수명이나 입력값만 맘대로 바꾸고, 그 구조틀 자체는 크게 바꾸지 않았는데도 자꾸 에러가 났다ㅠㅠ 왜때문에ㅠㅠ
// HundredOrLess 구조체는 래핑하는 값이 100과 같거나 더 작은 숫자가 포함됨
// 더 큰 숫자를 저장할 경우, 100이 저장됨
@propertyWrapper // 이거를 첫머리에 써줘야 함. 안썼더니 프로퍼티 래퍼라고 인식을 못해
struct HundredOrLess {
private var stillYoung = 0
var wrappedValue: Int {
get { return stillYoung }
set { stillYoung = min(newValue, 100) }
}
}
// set구문은 새로운값인 newValue가 100보다 작거나 같은 값인지 확인함
// get구문은 newValue에 저장된 값을 반환함
// stillYoung 선언부는 HundredOrLess의 구현에서만 stillYoung이 사용될 수 있도록 private 변수를 표기
// 그래서 다른 곳에서 작성된 코드는 wrappedVlue를 위한 get, set을 사용해서 값에 접근하거나 직접적으로 stillYoung 을 사용할 수 없음
// 아래는 항상 100이하인지 확인하기 위해 HundredOrLess 프로퍼티 래퍼를 사용하여 그룹나이를 저장하는 구조체
// 여기서는 속성으로 프로퍼티 전에 래퍼의 이름인 @HundredOrLess을 언급하여 프로퍼티 래퍼에 적용시킴
struct GroupAge {
@HundredOrLess var you: Int
@HundredOrLess var me: Int
}
var weareyoung = GroupAge()
print(weareyoung.you) // 0
weareyoung.you = 88
print(weareyoung.you) // 88
weareyoung.me = 120
print(weareyoung.me) // 100
구글링해보니 2020년도에 누군가가 똑같은 사이트의, 똑같은 예시로, 똑같은 에러가 나서 글을 올려둔게 있어 참고하였다. [2]
그덕분에 이부분이 playground에서만 보이는 swift자체 버그로 추정되며, 이럴 때는 swift commmand창에서 돌려보면 추가 확인이 가능한 것을 알았다.
※ 아래 사진은 swift 커멘드창 들어가는 곳 : macOS > Command Line Tool
본 게시물은 개인 공부 기록용이므로 내용에 오류가 있을 수 있습니다.
■ fast campus강의 외 참조자료
[1] https://bbiguduk.gitbook.io/swift/language-guide-1/properties#property-observers
[2] https://forums.swift.org/t/property-wrappers-exhibit-strange-behaviour-in-playground/40082/9
: 이번시간 실습해볼때 발생했던 에러와 동일한 이슈로 문의답변 확인한 곳
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
'Swift' 카테고리의 다른 글
[Swift 독학] 패스트캠퍼스 챌린지 26일차_오버라이딩 (0) | 2022.02.18 |
---|---|
[Swift 독학] 패스트캠퍼스 챌린지 25일차_상속 (0) | 2022.02.17 |
[Swift 독학] 패스트캠퍼스 챌린지 23일차_프로퍼티 관찰자 (0) | 2022.02.15 |
[Swift 독학] 패스트캠퍼스 챌린지 22일차_프로퍼티_연산, 타입 프로퍼티 (0) | 2022.02.14 |
[Swift 독학] 패스트캠퍼스 챌린지 21일차_프로퍼티_저장 프로퍼티 (0) | 2022.02.13 |