콘텐츠로 건너뛰기
Home » Development » Swift » 페이지 8

Swift

Swift / Cocoa / Foundation / Programming Language / UIKit / AppKit / Swift Standard Library / Swift 문법과 기능 / 공부하면서 알게된 내용들을 정리 / 어느 프로그래밍 언어 덕후의 연습장

(Swift) Array 완전정복 – 02. Sequence 프로토콜

Sequence

시퀀스(Sequence)는 직역하면 연속열이 될 수 있으며, 문자 그대로 개개의 원소들을 순서대로 하나씩 순회할 수 있는 타입을 의미한다. (Swift 기본 타입에 대해서는 사실상 모든 집합 타입이 이에 해당한다.) 시퀀스는 사실 Swift 문법과 밀접한 관련이 있는데, 바로 for - in 구문에 사용된다는 점이다.1더 보기 »(Swift) Array 완전정복 – 02. Sequence 프로토콜

(Swift) UIDynamic 예제

이전에 작성했던 UIDynamics 데모를 재작성했다.

  • swift3 문법을 적용했고,
  • 별도의 Xcode 프로젝트가 아니라 Playground 용으로 만들어서 바로 확인할 수 있게 했다.

UIDynamics를 적용하는 방법은 UIDynamicAnimator 객체를 만들고 여기에 애니메이션에 고려될 물리학적 요소 (중력이나 마찰등)를 behaivor로 설정해주면 된다. 애니메이터는 기준이 되는 레퍼런싱 뷰를 참조하면서 생성되고, 이후 해당 뷰 내의 뷰 계층 구조에 대해서 동역학을 계산하게 된다.
더 보기 »(Swift) UIDynamic 예제

UIDynamics를 사용하여 뷰들에 물리 시뮬레이션을 적용하기 – Swift

iOS 7.0부터 UIDynmic이라는 새로운 기술이 UIKit에 도입되었다. 이 기술은 UIView요소에 대해서 키 프레임 애니메이션등으로 구현하기 힘든 자연스러운 움직임을 쉽게 구현할 수 있게 해주는데, 대략 다음과 같은 것들이 있다.

이는 마치 2차원 UIView에 대해 각 뷰가 질량을 가지는 강체로 가정하고 중력, 질량가속도, 밀도, 탄성등을 적용한 물리 엔진에 의한 애니메이션 계산을 가능케 하는 것이다.더 보기 »UIDynamics를 사용하여 뷰들에 물리 시뮬레이션을 적용하기 – Swift

(Swift) Swift3의 커스텀 연산자 정의 변경점

Swift 3에 도입된 변화 중 하나는 연산자 정의 방식이 변경된 것이다. 이전버전까지는 다음과 같은 문법으로 새로운 연산자를 정의할 수 있었다.

infix operator <> { precedence 180 associativity left }

하지만 이 문법은 왠지 좀 엉성해보이는 구석이 있었다.

  • {...} 블럭내에서는 속성명과 속성값의 구분이 단순히 공백이다.
  • 속성명-속성값의 짝이 한 라인에 연결되어 선언될 수 있다.

더 보기 »(Swift) Swift3의 커스텀 연산자 정의 변경점

NSRegularExpression : 정규식 사용하기 – Swift

Swift의 정규식

Swift는 언어 자체에서 정규식을 지원하지 않고 FoundationNSRegularExpression 클래스를 이용한다.

  1. NSRegulareExpressioninitthrows이기 때문에 try와 같이 사용되어야 한다.
  2. 매치 결과는 TextCheckingResult 클래스의 인스턴스를 얻게 된다. 이는 매치영역 및 영역 내 각 매치 그룹의 범위를 NSRange값으로 가지고 있다.
  3. 문제는 Swift 문자열의 부분문자열은 Index<String.Index>에 의해서 얻을 수 있지, NSRange를 이용할 수 없다. 따라서 이를 컨버팅하는 편의함수나 타입 확장을 이용해야 한다. (사실 이 부분은 Linux 버전의 Swift의 문제이다. Apple Swift에서는 Foundation/Cocoa를 임포트하게 되면  NSString의 API가 그대로 String으로도 노출되기 때문에 그대로 사용이 가능하다.)

더 보기 »NSRegularExpression : 정규식 사용하기 – Swift

(Swift) String타입의 기초 – 03. 활용

목차 Updated (2023-03-03) : Swift 최신 버전과 일부 다를 수 있음 기본적인 문자열 조작에 이어서 몇 가지 문자열 조작과 관련한 대소문자 및 숫자 관련 문자열 전체를 대문자화, 소문자화 하는 기능으로 lowercased(), uppercased() 가 있다. 과거 분사 형태로 된 이름으로부터 이는 본래의 문자열을 변경하는 mutating 메소드가 아니라, 변환된 사본을 생성하는 함수임을 알 수 있다. lowercased(), uppercased()의 경우에는 String 타입이 기본적으로 제공한다. 현재 로케일에서의 지역화 버전인 localizedLowercased(), localizedUppercased()는 Foundation 의 NSString으로부터 브릿징된 API도 존재한다. 문자열이 대문자나 소문자로만 이루어져 있는지를 검사하는 (파이썬의 .isupper(),… 더 보기 »(Swift) String타입의 기초 – 03. 활용

(Swift) Swift의 String타입 기초 – 02. 문자열 조작

목차

  1. 문자열 생성하기
  2. * 문자열 조작하기
  3. 활용

문자열의 기본 조작

문자열 데이터를 다룰 때 가장 많이 쓰며, 또 중요한 스킬은 바로 문자열을 조작하는 것이다. 문자열 내의 특정 글자나 부분 문자열을 찾거나, 문자열에 어떤 글자를 추가, 삽입, 삭제, 변경하고, 문자열을 잘라서 나눈다던지 하는 등의 처리는 “간단한” 프로그램을 작성할 때 아주 많이 쓰이는 가장 기본적인 테크닉들이다.
또한 중요한 부분 중 하나는 문자열을 변경하는 작업은 크게 두 가지 타입으로 나뉘는데 하나는 원본 문자열 그 자체를 변경하는 것이고 다른 하나는 조작이 적용된 사본을 만드는 것이다. 이 장의 각 절에서는 이를 각각의 내용을 다뤄보도록 하겠다.더 보기 »(Swift) Swift의 String타입 기초 – 02. 문자열 조작

Swift의 String타입 기초 정복 – 01. 문자열 생성 방법들

문자열은 대부분의 프로그래밍 언어에서 중요한 비중을 차지하는 데이터타입이다. 많은 경우에 프로그램의 입출력은 주로 문자열 형식으로 전달되며, 사람이 읽을 수 있는 데이터를 그대로 받아서 처리하려는 경우에 문자열을 자르고 변환하고 조사하고 합치는 등의 작업은 거의 모든 프로그래머들의 필수적인 소양이며, 그만큼 프로그래밍 분야에서 문자열은 중요한 타입이다.
Swift의 문자열은 인코딩 독립적인 문자의 집합으로 타 언어에서 개별문자의 배열처럼 다뤄지는 것과는 내부적인 동작이 다르다. 따라서 직접적인 정수 인자에 의한 subscription이 불가능한 등의 제약 사항이 많아 보인다. 하지만 유니코드 문자열에 대한 완전한 지원과 유서깊은(?) NSString과의 연계등으로 여러가지 편의 기능들을 공짜로 얻게 되는 부분도 있다. 이 글에서는 Swift의 문자열에 대해서 여러 다양한 방법으로 문자열을 생성하는 것부터 시작해서 기본적인 변환/조작과 실제로 사용할 수 있는 몇 가지 예제들에 대해서 살펴보도록 하겠다.더 보기 »Swift의 String타입 기초 정복 – 01. 문자열 생성 방법들

enum으로 대체할 수 있는 단위타입에 대해 – Swift

트위터에서 재밌는 링크를 하나 발견했다. https://speakerdeck.com/abizern/safer-programming-with-types 이 링크가 전달하는 내용의 요지는 어떤 값의 타입이 동일하지만, 단위가 다르다거나 하는 등의 이유로 다르게 평가될 수 있는 값을 어떻게 안전하게 관리하는가 하는 문제이다. 예를 들어서 어떤 물건의 가격이나, 길이는 실수값의 숫자들로 표현가능하지만, 이 둘이 호환되는 단위는 아니다. 시간과 길이, 무게와 부피 등 데이터 타입으로는 같지만 단위가 달라서 실질적을 호환될 수 없는 값들은 현실에 많이 있다. 예를 들어 반지름과 중심각을 받아서 원호의 길이를 계산하는 함수를 작성한다고 생각해보자. func getArcLength(radius: Double, angle: Dounle) -> Double… 더 보기 »enum으로 대체할 수 있는 단위타입에 대해 – Swift