태그 보관물: swift3

(Swift) Array – 05. NSArray

목차

  1. Array – Array 타입, 생성과 조작
  2. Array – Sequence 프로토콜
  3. Array – Collection 프로토콜
  4. Array – ArraySlice
  5. Array – NSArray

브릿징 – NSArray

NSArray에서 제공하는 API를 사용하기 위해서는 Array 인스턴스를 as NSArray를 통해서 브릿징해야 한다. 브릿징이 가능한 경우는 배열 내 원소의 타입이 다음 중 한가지여야 한다.

  1. 클래스
  2. @objc 속성이 있거나 Objective-C로부터 들여온 프로토콜
  3. 애초에 Foundation 타입으로 브릿지 되는 타입

아래 예제는 Array 인스턴스를 NSArray 인스턴스로 브릿징하여 그 내용을 write(to:atomically:)로 저장하는 방법을 보여준다. [String] 타입은 NSArray<NSString>으로 브릿징이 가능하지만 [String?] 타입에 대해서는 불가능한데, String? 옵셔널 타입은 NSString으로 브릿징되지 않기 때문이다. Continue reading “(Swift) Array – 05. NSArray” »

(Swift) Array – 04. ArraySlice

목차

  1. Array – Array 타입, 생성과 조작
  2. Array – Sequence 프로토콜
  3. Array – Collection 프로토콜
  4. Array – ArraySlice
  5. Array – NSArray

ArraySlice 와 Range

배열은 단일 인덱스를 통해 하나의 원소를 액세스하는 것 외에도 범위(Range<Index>)값을 통해 하나 이상의 원소로 이루어진 부분 배열을 액세스하는 것이 가능하다.

let a = Array<Int>(1...10)
let b = a[3..<6] // [4, 5, 6]

범위는 ... 연산자와 ..< 연산자를 통해서 만들 수 있는데, 전자는 닫힌 범위, 후자는 열린 범위이다. 열린 범위는 맨 끝 값을 포함하지 않는 범위이다. 즉, 1...10 ==> 1, 2, 3 .. 10 이고 1..<10 ==> 1, 2, 3, .. 9 이다.

범위에 대해서도 좀 더 살펴봐야하겠지만, 여기서는 이 부분열에 대해 생각해보자. 이제 배열에 대해 보다 깊숙히 들여다 볼 차례이다. Continue reading “(Swift) Array – 04. ArraySlice” »