Skip to main content

Command Palette

Search for a command to run...

[swift] String.Index 는 무엇일까?

Published
•2 min read•View as Markdown
[swift] String.Index 는 무엇일까?
R

Hi there this is red🔴

🧐 String.Index 타입이란?

스위프트에서는 String 타입의 인덱스를 나타내기 위해서 Int 를 사용하지 않고 String.index 라는 특수한 타입을 사용한다.

그럼 이 값을 인트로 변환할 수는 없는 건가? 할 수 가 없다. 에러가 뜬다.😭

우선 스트링은 heap 에 저장 된다. (WWDC에서 말한 내용이니 이것은 맞다.) 🚨여기서 부터 뇌피셜 주의 String.Index 의 공식 문서를 보면 이 타입이 인스턴스로 var hashValue: Int 를 가지고 있고 메서드로는 func hash(into: inout Hasher) 를 가지고 있다. 추측하기로는 String.Index은 뭔가 우리가 알수 없는 무슨 값을 가지고 있고 그걸 구현되어 있는 해쉬 함수에 넣어보니 어떤 Character 값이 있는지 찾을 수 있었다. 이런 것 같다.

결론적으론 String.Index 타입을 인트로 바꿀순 없다... Int 로 접근을 원하면, String extension 에 subscript 를 구현해서 사용해야 한다.

swift에서 String

➕ String.Index를 사용하는 아이들

프로퍼티

⚙️ startIndex

var startIndex: String.Index { get }

문자열의 시작 요소 인덱스값

⚙️ endIndex

var endIndex: String.Index { get }

문자열의 마지막 요소 인덱스값

메서드

🛠 index(after i: String.Index)

func index(after i: String.Index) -> String.Index

주어진 인덱스 값의 바로 다음 인덱스를 리턴하는 메서드

🛠 index(before i: String.Index)

func index(before i: String.Index) -> String.Index

주어진 인덱스 값의 바로 전 인덱스를 리턴하는 메서드

🛠 index(_ i: String.Index, offsetBy n: String.IndexDistance)

func index(_ i: String.Index, offsetBy n: String.IndexDistance) -> String.Index

주어진 인덱스(i) 에서 offsetBy 만큼 떨어진 인덱스의 값을 리턴하는 메서드

🛠 index(_ i: String.Index, offsetBy n: String.IndexDistance, limitedBy limit: String.Index)

func index(_ i: String.Index, offsetBy n: String.IndexDistance, limitedBy limit: String.Index) -> String.Index?

주어진 인덱스(i) 에서 offsetBy 만큼 떨어진 인덱스의 값을 리턴하지만, limit를 걸어주어서 limit값을 넘는 인덱스에 접근하려고 하면 nil 을 반환.

🛠 firstIndex(of element: Character)

func firstIndex(of element: Character) -> String.Index?

앞에서 부터 검사했을 때 element 의 처음으로 만족하는 인덱스 값 리턴

🛠 lastIndex(of element: Character)

func lastIndex(of element: Character) -> Index?

뒤에서 부터 검사했을 때 element 의 처음으로 만족하는 인덱스 값 리턴


잘못된 정보가 있으면 알려주세요!

More from this blog

[swift] Substring는 왜 있는 걸까?

🗒 Substring 이란? String 타입을 가지고 메서드로 변형을 하게 되면 이상하게 return 타입이 String 이 아니고 Substring 이다. 애플 공식문서가 말하길 Substring 타입은 String 타입과 거의 동일한 메서드를 가지고 있기 때문에 String처럼 사용할 수 있는 타입이라고 한다. @frozen struct Substring 🧐 Substring이 존재하는 이유 위의 말에 따르면 String이나 Sub...

Mar 18, 20221 min read
[swift] Substring는 왜 있는 걸까?

[iOS] delegate 구현하기

✍🏻 delegate 패턴 이란? delegate 의 뜻은 위임이다. 나의 권한을 다른 사람에게 위임하다. 원래는 내가 사용하도록 가지고 있는 권한인데 다른 사람에게 내 권한을 사용할 수 있게 위임한다. 라는 의미로 사용 된다. delegate pattern 의 의미도 같다. 원래 나의 오브젝트가 처리할 권한을 가지고 있어서 처리해야 할 일을 다른 오브젝트에게 권한을 넘겨주어서 다른 오브젝트에서 처리하도록 해주는 패턴이다. ✍�...

Mar 17, 20224 min read
[iOS] delegate 구현하기

[iOS] Notification Center 구현하기

😁 노티피케이션 센터란? 노티피케이션 센터란, 등록된 관찰자에게 알려줄 수 있도록 하는 알림 메커니즘이다. KVO 나 delegate 가 1 대 1 통신을 하는 것에 가깝다면 노티피케이션 센터는 여러곳에서 온 정보를 한 곳에서 모아서 다시 여러 곳으로 뿌려주는 것에 가깝다. 그래서 많은 사람들이 방송국에 노티피케이션 센터를 비유한다. 💻 노티피케이션 센터 구현해보기 NotificationCenter 공식 문서 노티피케이션 센터라는 이미...

Mar 17, 20224 min read
[iOS] Notification Center 구현하기
R

Red Bite Apple

7 posts

🔴🔥😚 여기에 일단 나에 대한 소개를 써보자 이건 어디에 계시 되는 것일까?