반응형 미스터 후1575 Swift 제네릭 함수, 제네릭 타입 제네릭은 중복을 피하면서 매우 유연하고 재사용이 가능한 코드를 작성할 수 있게 해 준다. 스위프트 언어에서 제네릭은 옵셔널의 예로 사용 된다. 옵셔널 타입은 두 개의 사용 가능한 값인 None과 Som(T)로 이뤄진 열거형으로 정의돼 있으며, 여기서 T는 적절한 타입의 연관 타입을 나타낸다. 옵셔널에 nil을 대입하면 None 값을 갖게 되고, 옵셔널에 어떠한 값을 대입하면 적절한 타입의 연관 값을 갖는 Some 값을 갖게 될 것이다. enum Optional { case None case Some(T) } T는 옵셔널과 연관된 타입, 플레이스홀더인 T는 제네릭을 정의하는데 사용한다. 제네릭을 사용해 중복을 피하는 예는 다음과 같다. 두 변수의 값을 교환하는 함수를 만들고자 할 때 여러 타입(Intege.. 2021. 7. 15. Swift Protocol Extension 예제와 사용 절차 책의 예제 코드를 기반으로 프로토콜을 선언하고 확장하며, 프로토콜을 따르는 타입(클래스, 구조체)에서 사용하기까지에 대해 간단하게 나열을 한다. protocol TextValidation { var regExFindMatchString: String {get} var validationMessage: String {get} } protocol을 정의하면서 프로퍼티 2개를 정의했다. 다음은 프로토콜을 확장하면서 1개의 연산프로퍼티와 2개의 메서드를 확장(추가) 정의한다. extension TextValidation { var regExMatchingString: String { get { return regExFindMatchString + "$" } } func validateString(str: Str.. 2021. 7. 14. Swift 정규 표현식 규칙에 대한 이야기 정규식 abc 의 경우 xyzabcxyzbc 일 때 문자열 abc와 일치한다. 정규식 12345의 경우 1234567890에서 문자열 12345와 일치한다. 꺽쇠 괄호 ([])를 사용하면 문자 집합(character sets)을 정의할 수도 있다. 문자 집합은 집한 안에 있는 문자와 문자열에 있는 하나의 문자와 일치할 것이다. 집합을 정의하기 위해서는 문자열을 사용하거나 범위를 명시하기 위해 - (마이너스 기호) 연산자를 사용할 수 있다. 정규식 [abc] 의 경우 xyzabcxyz 에서 abc집합에 있는 문자와 일치한다. 정규식 [a-zA-Z]의 경우 xyzabcxyz에서 소문자 또는 대문자에 일치한다. 반복 횟수를 명시하기 위해서는 중괄호({})를 사용해 하나 이상의 문자를 일치시킬 수 있다. {2,.. 2021. 7. 14. extension Double - String 통화 기호(소수점 두 자리 반올림) 제목의 요약과 같이 double값을 통화를 나타내는 값인 String타입으로 변환하는 메소드를 추가하기 위해 Double 타입을 확장하는 예제. 이 메서드는 소수점 두 자리로 반올림하고 통화 기호를 추가하는 예제. extension Double { func currencyString() -> String { let divisor = pow(10.0, 2.0) let num = round(self * divisor).rounded() //제수 return "$\(num)" } } 확장에는 저장 프로퍼티를 추가할 수 없지만, 연산 프로퍼티는 추가할 수 있다. extension Int { var squared: Int { return self * self } } 정수를 제곱한 값을 얻기 위해 연산 프로퍼티로 .. 2021. 7. 14. Swift Protocol 정의 나는 좀 더 공부를 해보기로 했다. 그 내용이 무엇이던지간에 좀 더 파보기로 했다. 스위프트에서 프로토콜을 정의하는 방법은 다음과 같다. protocol MyProtocol { //프로토콜 정의는 여기에... } protocol 키워드를 사용하며, 그 다음으로 프로토콜 이름이 위치한다. 커스텀 타입은 타입 이름 뒤에 콜론으로 구분해 프로토콜의 이름을 위치시킴으로써 해당 타입이 따르는 특정 프로토콜을 나타낼 수 있다. -> 즉 계약의 역할, 구현할 것을 약속하는 것이다. struct MyStruct: MyProtocol { //구조체 구현체는 여기에 위치한다. } 타입은 다중 프로토콜을 따를 수 있다. 다중 프로토콜은 콜론으로 구분해 열거하면 된다. struct MyStruct: MyProtocol, An.. 2021. 7. 9. UILabel Size Animation With layer.anchorPoint UILabel의 font사이즈를 줄이는 애니메이션은 일반적인 UIView애니메이션으로 한계가 있는 듯 하다. UILabel의 스케일을 줄이면서 앵커포인트를 맞추면서 좌측 정렬상태에서 늘어나고 줄어드는 예제 코드인데 내 경험으로 판단할 때 오토레이아웃이 잡힌 경우라면 Constraint를 잘 설정해주어야 할 것 같고 그러지 않을 경우는 아예 제약을 다 클리어 한다음에 애니메이션 행위에 집중하는 것이 좋을 것 같다. 소스는 간단하다. self.lblName.sizeToFit() self.lblName.layer.anchorPoint = CGPoint(x: 0, y: 0) self.lblName.layer.position = CGPoint(x: 14, y: 8) UIView.animate(withDuratio.. 2021. 7. 5. 이전 1 ··· 25 26 27 28 29 30 31 ··· 263 다음 반응형