본문 바로가기

Swift

(19)
[Swift] 안전하게 배열 접근하기 참고한 StackOverflow https://stackoverflow.com/questions/25329186/safe-bounds-checked-array-lookup-in-swift-through-optional-bindings/30593673#30593673 Safe (bounds-checked) array lookup in Swift, through optional bindings? If I have an array in Swift, and try to access an index that is out of bounds, there is an unsurprising runtime error: var str = ["Apple", "Banana", "Coconut"] str[0] // "Apple"..
[Swift] Provider Pattern + Moya를 곁들여 네트워크 구조 더 잘 짜기 -1- Provider Model Design Pattern and Specification, Part 1 Provider Model Design Pattern and Specification, Part 1 Table of contents Provider Model Design Pattern and Specification, Part 1 Article 06/30/2006 17 minutes to read In this article --> Rob Howard Microsoft Corporation March 2, 2004 Summary: Rob Howard returns to Nothin' But ASP.NET to look at how you can use docs.microsoft.com 위 글을 함께 참고..
[Swift] 로컬라이징(localizing)을 이용한 string 관리 참고 자료 : https://zeddios.tistory.com/368 iOS ) 왕초보를 위한 로컬라이징 / Localizing Your App 안녕하세요 :) Zedd입니다. 오늘은 로컬라이징!!!!! 저는 영어를 베이스로 만들고 있는데..물론 다 이해가지만 각 나라언어로 보여지면 어떨까 싶어서 이번기회에 로컬라이징을 공부해보려고 합니 zeddios.tistory.com 부제 : 하드코딩 해결하기 반복적으로 사용하는 string값은 어느 앱이나 존재합니다. 예를 들어 다양한 팝업, 얼럿에 '확인'같은 버튼의 문구가 사용되는 것 처럼 말이죠. 그런데 어느 날 '확인'이라는 문구를 글로벌 앱으로 변화시킨다는 정책으로 'ok'로 바꾼다고 가정해봅시다. 위 상황이면 모든 '확인' string 데이터를 'ok..
[Swift] 전처리문(The preprocessor macro) 참고하면 좋은 블로그 https://eunjin3786.tistory.com/219 전처리문이란? 컴파일 이전에 처리되는 코드로 빌드 시 DEBUG, RELEASE 등을 구분하거나 디바이스 혹은 OS 버전을 구분하는 용도로 흔하게 사용한다. #if DEBUG // 디버그로 빌드했을 때 사용 할 코드 ... #elseif RELEASE // 릴리즈 빌드시 사용 할 코드 ... #endif 디버그와 릴리즈를 구분하는 전처리문을 사용했을 때 좋은 점은? 내가 만든 앱을 테스트하는 경우 보통 디버그 모드로 빌드해 앱을 테스트한다. 그럴 때 정상적으로 동작하는지 print문을 이용해 콘솔창에 로그를 출력하거나 개별적인 로그 방식을 이용해 앱을 테스트하는데(간혹 더미값을 넣기도 함) 휴먼 에러로 print문을 지우..
Protocol 안녕하세요, 우디입니다. 이번 글에서는 Swift에서 사용 가능한 프로토콜에 대해 이야기해보려고 합니다. 기능에 대한 정확한 정보와 사용 방법은 언제나! 꼭! 공식문서를 참고하시길 바랍니다. Swift - Protocols Protocols — The Swift Programming Language (Swift 5.5) Protocols A protocol defines a blueprint of methods, properties, and other requirements that suit a particular task or piece of functionality. The protocol can then be adopted by a class, structure, or enumeration to p..
[Swift] Closure 안녕하세요 우디입니다 🤪 최근에 면접을 봤는데 많이 어렵네요... 한번씩 공부하고 사용한 개념들이지만 긴장해서 그런건지 제대로 공부하지 못한건지 스스로 아쉬운 대답이 많았습니다 ㅠㅠ 그래서 '아 이렇게 대답한게 맞나...?' 한 부분에 대해 다시한번 공부하고 정리해보는 시간을 가지려고 합니다. 야곰 아카데미에서 야곰이 종종 하는 말이 있습니다. '설명하지 못하면 모르는거다' 이번에 공부해볼 내용은 클로져입니다. Swift - Closure Closures — The Swift Programming Language (Swift 5.5) Closures Closures are self-contained blocks of functionality that can be passed around and used ..
[Swift] Data(contentsOf: url) 동기적인 파일 다운로드 원본 글 [Swift] Data(contentsOf: url) Apple Developer - Data(contentsOf: url) wodylikeios.notion.site 안녕하세요 Wody입니다. 요즘 앱은 대부분 네트워크 통신 기능을 사용합니다. 예를 들어 사진을 표시하거나 사용자 정보를 저장하기 위해 서버와 통신하는 경우가 있습니다. 이번에 알아볼 것은 동기적으로 동작하는 간단한 다운로드 기능입니다. Apple Developer - Data(contentsOf: url) 소속 Foundation > Data > NSData init(contentsOf: url) init?(contentsOf url: URL) 사용법 let data = try? Data(contentsOf: url) 설명 이 ..
[Swift] URLSession으로 multipart/form-data request하기 안녕하세요 wody입니다. 얼마 전에 URLSession에 대해 알아보는 글을 작성했었는데, 오늘은 활용하는 글을 작성하고자 합니다. 이번 공부의 핵심 주제는 다음과 같습니다 HTTP 통신 HTTP 개요 - HTTP | MDN HTTP는 HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜입니다. HTTP는 웹에서 이루어지는 모든 데이터 교환의 기초이며, 클라이언트-서버 프로토콜이기도 합니다. 클라이언트-서버 developer.mozilla.org Apple Developer - URLRequest Apple Developer Documentation developer.apple.com 개요 URLSession을 통해 GET 방식의 통신은 body가 없으므로 API에 맞는 url주소로 요청하..
[Swift] split vs components (Substring) Apple Developer - split Apple Developer - component 빠른 결론 문자열을 특정 구분자를 통해 배열로 반환해야할 땐 components를 사용하는게 좋다. split을 사용할 경우 반환값으로 Substring이 반환되어 메모리 누수 위험이 생길 수 있기 때문이다. split vs components String 타입의 데이터를 주어진 조건에 따라 분할하여 배열을 반환하는 메소드 split & components 는 어떤 차이가 있을까? split func split(separator: Character, maxSplits: Int = Int.max, omittingEmptySubsequences: Bool = true) -> [Substring] separator :..
[Swift] Struct And Class 안녕하세요, Wody입니다. 최근 코로나 백신주사를 맞아 정신이 없었습니다. 오늘은 정말 많이 사용하며, 익숙하면서도 놓치기 쉬운 녀석 클래스와 구조체에 대해 알아보겠습니다. 참고문서 : Struct And Class 구조체와 클래스의 비교 공통점 값을 저장할 프로퍼티 정의 기능을 제공하는 메소드 정의 아래 첨자 구문을 사용하여 값에 대한 액세스를 제공 초기 상태를 설정하기 위한 이니셜라이저 정의 기본 구현 이상으로 기능을 확장하도록 [extenstion]() 기능 제공 특정 종류의 표준 기능을 제공하는 [protocol]() 기능 제공 차이점 (구조체에는 없는 클래스의 기능) 상속 타입 캐스팅을 사용하면 런타임에 클래스 인스턴스의 유형을 확인하고 해석할 수 있습니다. Deinitalizers를 통해 클..