(Swift) Array – 05. NSArray

목차 Array – Array 타입, 생성과 조작 Array – Sequence 프로토콜 Array – Collection 프로토콜 Array – ArraySlice Array – NSArray 브릿징 – NSArray NSArray에서 제공하는 API를 사용하기 위해서는 Array 인스턴스를 as NSArray를 통해서 브릿징해야 한다. 브릿징이 가능한 경우는 배열 내 원소의 타입이 다음 중 한가지여야 한다. 클래스 @objc 속성이 있거나 Objective-C로부터 들여온 프로토콜 애초에 Foundation 타입으로 브릿지 되는 타입 아래 예제는 Array 인스턴스를 NSArray 인스턴스로 브릿징하여 그 내용을 write(to:atomically:)로 저장하는 방법을 보여준다. [String] 타입은 NSArray<NSString>으로 브릿징이 가능하지만 [String?] 타입에

(Swift) Array – 04. ArraySlice

목차 Array – Array 타입, 생성과 조작 Array – Sequence 프로토콜 Array – Collection 프로토콜 Array – ArraySlice Array – NSArray ArraySlice 와 Range 배열은 단일 인덱스를 통해 하나의 원소를 액세스하는 것 외에도 범위(Range<Index>)값을 통해 하나 이상의 원소로 이루어진 부분 배열을 액세스하는 것이 가능하다. let a = Array<Int>(1…10) let b = a[3..<6] // [4, 5, 6] 범위는 … 연산자와 ..< 연산자를 통해서 만들 수 있는데, 전자는 닫힌 범위, 후자는 열린 범위이다. 열린 범위는 맨 끝 값을 포함하지 않는 범위이다. 즉,

(Swift) Array – 03. Collection 프로토콜

Collection 목차 Array – Array 타입, 생성과 조작 Array – Sequence 프로토콜 Array – Collection 프로토콜 Array – ArraySlice Array – NSArray Collection은 Sequence 프로토콜을 상속하면서 한 가지 개념(기능)을 추가했다. 그것은 인덱스를 통해서 개별 원소를 액세스할 수 있는 점이다. 따라서 Sequence와 달리 여러번이고 순회할 수 있고, 순회 시 내부 자료가 소모되지 않는다.

(Swift) Array – 02. Sequence 프로토콜

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

RegularExpression-swift

Swift3에서 문자열 확장과 재명명된 API를 이용하여 간결하게 문자열 내의 특정 범위를 찾고, 문자열을 치환하는 테크닉에 대해 살펴본다. Swift의 정규식 Swift는 언어 자체에서 정규식을 지원하지 않고 Foundation의 NSRegularExpression 클래스를 이용한다. NSRegulareExpression의 init은 throws이기 때문에 try와 같이 사용되어야 한다. 매치 결과는 TextCheckingResult 클래스의 인스턴스를 얻게 된다. 이는 매치영역 및 영역 내 각 매치 그룹의 범위를 NSRange값으로 가지고 있다. 문제는 Swift 문자열의 부분문자열은 Index<String.Index>에 의해서 얻을 수 있지, NSRange를 이용할 수 없다. 따라서 이를 컨버팅하는 편의함수나 타입 확장을 이용해야 한다.