Swift/기초 카테고리에 업로드한 모든 내용은 KxCoding 기초 강의를 토대로 작성하였습니다.
⎮ Formatter 이해하기
let formatter = NumberFormatter() // 인스턴스 생성
formatter.minimumFractionDigits = 0 // 소수 부분이 0일 때, 소수 부분은 빼고 정수만 표현
formatter.maximumFractionDigits = 1 // 최대 자리수 결정. 소수 1자리까지만 표시하는 코드
print(formatter.string(for: 4.234567))
//optional("4.2")
print(formatter.string(for: 4.0))
//optional("4")
let formatter = DateComponentsFormatter() // 인스턴스 생성
formatter.allowedUnits = [.hour, .minute] // .hour, .minute을 통해 유닛 지정
formatter.unitsStyle = .full // n시간, n분으로 줄이지 않고 full text로 표현해줌
print(formatter.string(from: TimeInterval(3300)))
//optional("55 minutes")
https://developer.apple.com/documentation/foundation/formatter
Formatter | Apple Developer Documentation
An abstract class that declares an interface for objects that create, interpret, and validate the textual representation of values.
developer.apple.com
⎮ 리뷰 태그 만들기
1. 코드 추가
let reviewScore: Double? //점수는 소수점이니까 Double로, 점수가 없는 강의도 있으니까 optional로
2. 속성을 추가하여 리뷰점수를 적절하게 포매팅하기 위한 코드 추가
let reviewScore: Double? //리뷰 점수가 없는 강의도 있으니까 optional로
var reviewScoreStr: String? {
guard let score = reviewScore else { return nil }
}
3. Formatter 인스턴스 생성
4. 소수점 설정하는 코드 추가
let reviewScore: Double? //리뷰 점수가 없는 강의도 있으니까 optional로
var reviewScoreStr: String? {
guard let score = reviewScore else { return nil }
let formatter = NumberFormatter() // 인스턴스 생성
formatter.minimumFractionDigits = 0 // 소수 부분이 0일 때, 소수 부분은 빼고 정수만 표현
formatter.maximumFractionDigits = 1 // 최대 자리수 결정. 소수 1자리까지만 표시하는 코드
}
5. 메소드 호출 후 문자열로 포매팅
let reviewScore: Double? //리뷰 점수가 없는 강의도 있으니까 optional로
var reviewScoreStr: String? {
guard let score = reviewScore else { return nil }
let formatter = NumberFormatter() // 인스턴스 생성
formatter.minimumFractionDigits = 0 // 소수 부분이 0일 때, 소수 부분은 빼고 정수만 표현
formatter.maximumFractionDigits = 1 // 최대 자리수 결정. 소수 1자리까지만 표시하는 코드
return formatter.string(for: score) // string(for:) 메소드 호출 후 문자열로 포매팅해서 return
}
⎮ 다양한 태그 추가하기
* 회원의 경우 수료증 발급, 비회원의 경우 수료증 미발급(Boolean Type으로 구현)
1. 코드 추가
let isCertificationAvailable: Bool // 수료증 발급 유무를 알려주는 태그
let isFree: Bool // 무료 여부를 알려주는 태그
let lectureCount: Int // 강의 개수를 알려주는 태그
let totalDuration: Int // 전체 재생 시간을 알려주는 태그
2. 전체 시간을 계산하기 위해 계산 속성 추가
let isCertificationAvailable: Bool // 수료증 발급 유무를 알려주는 태그
let isFree: Bool // 무료 여부를 알려주는 태그
let lectureCount: Int // 강의 개수를 알려주는 태그
let totalDuration: Int // 전체 재생 시간을 알려주는 태그
var totalDurationStr: String? {
}
3. formatter 활용하기
let formatter = DateComponentsFormatter()
formatter.allowedUnits = [.hour, .minute] // .hour, .minute을 통해 유닛 지정
formatter.unitsStyle = .full // n시간, n분으로 줄이지 않고 full text로 표현해줌
return formatter.string(from: TimeInterval(totalDuration))
⎮ 목록의 순서 정하기
1. 코드 추가
let priority: Int
2. 각 강좌별 상세페이지를 구현하려면, 개별 모델을 각각 구분할 수 있게 해야함(중복되지 않는 속성으로)
* 예를 들면 정수나 title이나, UUID 등. 대부분은 정수를 사용함
let courseId: Int
3. 특정회원에게만 공개되는 강의도 있으므로, 공개 유무 속성 추가
let isPublic: Bool
+ 챗 GPT 활용해서 속성 이름 추천받기
+ UUID(범용 고유 식별자) : 전 세계적으로 유니크한 식별자(문자열. 36개 문자로 8-4-4-4-12 형태)
'Swift > 기초' 카테고리의 다른 글
38. 스위프트 기초 문법[Modeling(4) - Camp 모델링] (0) | 2025.02.17 |
---|---|
37. 스위프트 기초 문법[Modeling(3)] (0) | 2025.02.17 |
35. 스위프트 기초 문법[Modeling(1) - 모델링 기초와 다양한 속성들] (0) | 2025.02.11 |
34. 스위프트 기초 문법[Type(3) - 클래스, 열거형 활용] (0) | 2025.02.07 |
33. 스위프트 기초 문법[Type(2) - Enumeration] (0) | 2025.02.07 |