iOS/Swift

    [Swift] 프로퍼티(Property)

    프로퍼티 접근자 메소드를 자동으로 생성하는 기술입니다. let으로 생성했을 경우에는 getter 기능만 제공하는 것이고, var로 생성했을 경우에는 getter, (optional) setter 두 가지 기능을 모두 제공하는 것입니다. Stored Property - 저장형 프로퍼티 단순히 값을 저장하고 있는 프로퍼티 Enum 에서 사용 불가능 Computed Property - 계산형 프로퍼티 var를 사용합니다. newValue로 setter에서 새로운 값을 사용할 수 있습니다. (변수명 지정도 가능합니다) 프로퍼티를 가장한 메소드입니다 간단한 메소드를 계산형 프로퍼티로 사용하면, 코드의 가독성에 도움이 됩니다. 메소드로 기능을 제공할 경우 struct Timer { let id: Int let st..

    [Swift] Enum2

    Enum없이 분기하고자 할때 이미지의 확장자별로 분기하고자 했는데 확장자가 늘 일정하지 않을 수 있습니다. "jpg"로 입력되었으면 했지만, "JPG", "JPEG", "jpeg" 등 다양하게 입력이 되는데 이 부분을 모두 분기 처리하기에는 굉장히 번거롭습니다. func getAvatarImageFilename(for fileExtension: String) -> String? { swtich { case "jpg": return "avatar.jpg" case "bmp": return "avatar.bmp" case "gif": return "avatar.gif" // 단일 실패의 처리는 optional default: return nil } } if let result = getAvatarImageF..

    [Swift] 상속

    Swift에 대해서 개인적으로 공부하고 기록한 포스팅입니다. 구조체를 활용한 상속? 중복된 속성이 존재할 때, 객체 지향 설계에서는 중복된 속성을 부모 클래스를 통해 캡슐화가 가능합니다. 스위프트에서 상속을 사용하기 위해서는 구조체가 아닌 클래스를 이용해야 합니다. (Call by Ref) 아래와 같이 상속을 위해서는 구조체를 활용할 수 없습니다. struct User { let email: String let password: String let joinDate: Date var level: Int var exp: Int } struct Admin { let email: String let password: String let joinDate: Date var logs: [String] } 클래스를 활..

    [Swift] Tuple

    Tuple(튜플) 다양한 값의 묶음 임시적으로 사용할 때는 유용하지만, 범용적으로 사용될 경우 구조체나 클래스를 이용해야 합니다. func foo() -> (Stirng, Int) { return("Tom", 42) } var result = foo() print("\(result.0) / \(result.1)") var (name, age) = foo() print("\(name) / \(age)") func foo2() -> (name: String, age: Int) { return (name: "Tom", age: 42) } var result2 = foo2() print("\(result2.name) / \(result2.age)") var (name2, age2) = foo2() print("..

    [Swift] Enum

    Struct를 활용해서 채팅 메세지를 만든다고 가정해보겠습니다. 채팅메세지에는 아래와 같은 형식을 가지고 있습니다. 일반적인 텍스트 메세지 채팅 참가 메세지 채팅 탈퇴 메세지 위와 같은 메세지 형태를 Struct로 표현했을 경우와 Enum으로 표현했을 경우에는 어떤 차이점이 있는지 확인해보겠습니다. 1. Struct struct Message { let userId: Int let contents: String? let data: Date let hasJoined: Bool let hasLeft: Bool } let joinMessage = Message(userId: 1, contents: nil, date: Date(), hasJoined: true, hasLeft: false) let textMes..

    [Swift] 문자열 (String)

    0. Siwft를 처음 공부하게 되면서 2020년 11월에 IOS앱 출시를 목표로 Swift 공부를 시작하게 되었다. 가장 첫 번째 포스트이기도 하고 "배운 것들을 그때그때 정리해야지!" 라고 항상 생각하긴했는데 이제서야 실천하게 된다. 아마 이 포스팅을 누군가 보고있다면 " 왜 첫 번째 포스팅이 문자열(String) 이지?" 라고 생각할 것 같다. 아무래도 첫 번째 언어가 C언어인 탓이 크다고 할 수 있겠다. C의 문자열 관리는 정말 어려웠던 기억이 생생하기 때문인데, strcpy strcmp따위를 사용하다가 C++ String 클래스의 operator+ operator==등을 사용하게 되면서 속에 꽉막힌 무언가가 내려가는 느낌을 아직도 잊을 수 없다. 그런 이유로 String 클래스부터 펼쳐본다. 1..