이유와 답
- 먼저 Swift에서 Character는 한 개 이상의 Unicode Scalar로 이루어져 있으며, 크기가 가변적입니다.
- Swift의 String은 Struct타입이고, Characters의 collection입니다. 즉 Array <Element>의 element가 Character인 배열입니다.
- 그렇기 때문에 Swift에서 String은 str[n]과 같은 방식으로 Subscript로 접근할 수 없으며, String.index로 접근해야만 사용할 수 있습니다.
subscript에 관한 글
2022.02.15 - [iOS/Swift 문법 심화 학습] - 서브스크립트 [ Subscript ]
서브스크립트 [ Subscript ]
정의 - 컬렉션, 리스트, 시퀀스, 등,, 집합의 특정 멤버 엘리먼트에 간단하게 접근할 수 있는 문법입니다. - 클래스, 구조체, 열거형에서 스크립트를 정의해 사용할 수 있습니다. - 서브스크립트를
seagreen83.tistory.com
실습 예제
- 문자열의 타입, utf8, utf16, unicodeScalars 출력
let testString = "🙄😉😝😓"
print("------> testString")
testString.forEach { char in
print(type(of: char))
}
print("------> testString.utf8")
testString.utf8.forEach {
print(type(of: $0), $0)
}
print("------> testString.utf16")
testString.utf16.forEach {
print(type(of: $0), $0)
}
print("------> testString.unicodeScalars")
testString.unicodeScalars.forEach {
print(type(of: $0), $0)
}
실행 결과
실습 예제 2
- string.index 사용
let testString2 = "🦾🐧🐣567"
let index = testString2.index(testString2.startIndex, offsetBy: 4)
print(index)
print(testString2[index])
실행 결과
-
다른 index number 출력
let testString2 = "🦾🐧🐣567"
let index = testString2.index(testString2.startIndex, offsetBy: 0)
print(index)
print(testString2[index])
실행 결과
내용 출처
Swift) String은 왜 subscript[Int]로 접근이 안될까?
swift String unicode subscript
velog.io
'iOS > iOS' 카테고리의 다른 글
OOP, FP (0) | 2022.04.05 |
---|---|
멀티 스레드(Multi Thread) 구현 시, 고려할 수 있는 방식 (0) | 2022.04.01 |
Main Thread (0) | 2022.03.29 |
URLSession (이론) (0) | 2022.03.28 |
Foundation Kit (0) | 2022.03.25 |
댓글