본문 바로가기
Swift/기초

35. 스위프트 기초 문법[Modeling(1) - 모델링 기초와 다양한 속성들]

by UDDT 2025. 2. 11.

Swift/기초 카테고리에 업로드한 모든 내용은 KxCoding 기초 강의를 토대로 작성하였습니다.

 

Modelling

  1. Modeling : 구조체 / 클래스 / 열거형으로 모델을 만드는 과정

  2. Model(Data Model) : 앱에서 사용(처리)하는 데이터

 

⎮ 친구 목록을 만드는 간단한 App 모델링 하는법

  - 친구 정보 데이터 : 이름, 별명, 생일, 성별, 사는 곳, 키, 몸무게, MBTI, 휴대폰 번호 등

   1. 추상화(Abstraction) : 필요한 데이터를 추리는 과정(이름, 생일, 휴대폰 번호, 사는 곳)

   2. 코드로 Type을 구현 : 구조체 / 클래스 / 열거형 중에 선택

      - 열거형 : 연관된 상수를 하나의 그룹으로 묶어야 할 때

      - 클래스 : 복사본 대신 주소를 전달해야하거나 상속이 필요할 때

      - 구조체 : 그 외 (처음에 구조체로 만들었다가 나중에 바꿔도 됨)

 

⎮ 모델링 공부하는 법

   1. 자주 사용하는 앱을 들어가서 그 앱이 어떻게 구현되는지 분석

   2. 코드로 구현



 

⎮ 강의 제목 입력하기

 

  1. 구조체로 코드 입력                        * 강의 제목은 자주 수정하지 않기 때문에 상수로 저장

struct Course {
	let title: String   // (인스턴스) 속성, (Instance) Property. 여기서는 상수를 저장했으므로 상수 저장 속성
}

 

  2. Instance 만들기                  

let ios = Course(title: "Mastering iOS")

let swift = Course(title: "Mastering Swift")

 

⎮ 강의 소제목 입력하기

 

  1. 코드 추가

struct Course {
    let title: String
    let subtitle: String   
}

 

강의 백그라운드 / 썸네일 이미지 추가하기

     * 저장된 이미지를 불러오게 하거나 데이터를 불러오게 할 수 있음.

 

  1. 코드 추가

struct Course {
    let title: String
    let subtitle: String   
    
    let cardImageUrlStr: String
}

* 서버에 접근해서 이미지를 불러오는게 아니니까 String Type (let cardImage: UIImage로 불러오게 할 수도 있음)

 

  2. 썸네일 이미지가 있다면 코드 추가

struct Course {
    let title: String
    let subtitle: String

    let cardImageUrlStr: String 
    //let cardImageUrl : URL     계산 속성. Computed Property
    let thumbnailImageUrlStr: String?
    //썸네일이 없을 수도 있으니까 optional로 설정
}

* String으로 저장했기 때문에 Url Type으로 바꿔야 함

 

  3. 속성에 저장된 문자열을 Url Type으로 변경하기 위한 코드 추가

struct Course {
    let title: String
    let subtitle: String

    let cardImageUrlStr: String
    // let cardImageUrl: URL
    var cardImageUrl : URL? {
        get {
            return URL(string: cardImageUrlStr)
        }
        set {

        }
    }
        let thumbnailImageUrlStr: String?
}

* set 블록이 필요가 없다면 지워도 됨

 

  4. set 블록 생략(읽기 전용 계산 속성. read-only computed property)

struct Course {
    let title: String
    let subtitle: String

    let cardImageUrlStr: String
    // let cardImageUrl: URL
    var cardImageUrl : URL? {
        get {
            return URL(string: cardImageUrlStr)
        }
    }

    let thumbnailImageUrlStr: String?
}

 

  5. 읽기 전용일 때 get 키워드와 {}도 생략이 가능함

struct Course {
    let title: String
    let subtitle: String

    let cardImageUrlStr: String
    // let cardImageUrl: URL
    var cardImageUrl : URL? {
        return URL(string: cardImageUrlStr)
    }

    let thumbnailImageUrlStr: String?
}

 

  6. 만약 return문 밖에 없다면 return 키워드도 지울 수 있음

struct Course {
    let title: String
    let subtitle: String

    let cardImageUrlStr: String
    // let cardImageUrl: URL
    var cardImageUrl : URL? {
        URL(string: cardImageUrlStr)
    }

    let thumbnailImageUrlStr: String?
}

 

  7.  썸네일 이미지도 동일하게 적용

struct Course {
    let title: String
    let subtitle: String

    let cardImageUrlStr: String
    // let cardImageUrl: URL
    var cardImageUrl : URL? {
        URL(string: cardImageUrlStr)
    }

    let thumbnailImageUrlStr: String?
    var thumbnilImage : URL? {
        guard let str = thumbnailImageUrlStr else {
            return nil
        }
        return URL(string: str)
    }
}

  * 썸네일 이미지 자체가 optional이기 때문에 optional binding 적용

 

최근댓글

최근글

skin by © 2024 ttuttak