본문 바로가기

swift

(12)
[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) 설명 이 ..
[iOS] Unable to activate constraint with anchors Error 개요 SnapKit을 통해 코드로 레이아웃을 만들고 있다가 오류를 만났습니다. 레이아웃을 잡으면 발생하는 오류이고, 레이아웃을 잡지 않으면 오류가 발생하지 않았습니다. 에러의 원인은 레이아웃이라고 생각했습니다. 에러 본문 Thread 1: "Unable to activate constraint with anchors and because they have no common ancestor. Does the constraint or its anchors reference items in different view hierarchies? That's illegal." 에러 해석 (번역기) 쓰레드 1 : "앵커로 구속을 활성화할 수 없음"Anchor : 0x6000017f0380 "OpenMarket.Item..
[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를 통해 클..
[Swift] String and Characters(문자열과 문자) Swift Docs - Strings and Characters Apple Developer - String Apple Developer - Character 문자열과 문자에 대한 정의 문자열(String)은 문자의 모음인 유니코드 문자열 값이다. 문자(Character)는 사용자가 인식하는 문자에 가까운 단일 확장 자소 클러스터다. String(이하 문자열)을 사용하다보면 Character(이하 문자)를 자주 접하게 된다. 예를 들어 문자열을 기준으로 하는 반복문을 사용하면 만나볼 수 있는데, 개별 요소로 문자가 나온다. let testStrings = "hello" for character in testStrings { print(character) } // Prints // h // e // l /..
[Swift] 네트워크와 무관한 URLSession Unit Test 안녕하세요 Wody 입니다. 오늘은 네트워크와 무관한 URLSession의 Unit Test에 대해 공부했습니다. 구글링을 해봤는데 대부분의 예제는 Alamofire를 이용하고 있어서 조금 어려웠는데 다른 분들께 도움이 됬으면 좋겠습니다. 원본 노션 링크 네트워크와 무관한 URLSession Unit Test를 하는 목적 유닛 테스트는 빠르고 안정적으로 진행되어야 합니다. 실제 서버와 통신하게되면 단위 테스트의 속도가 느려질 뿐만 아니라 인터넷 연결에 의존하기 때문에 테스트를 신뢰할 수 없습니다. 실제 서버와 통신하면 의도치 않은 결과를 불러올 수 있습니다. 예를 들어 우리는 서버에 Item 을 등록하는 코드를 테스트하길 원합니다. 그런데 실제 서버에 코드를 호출하면 데이터가 실제로 등록되기 때문에 의도..
[Swift] ARC와 순환 참조 안녕하세요, Wody 입니다. 이번 글은 ARC와 순환 참조가 무엇이며, 어떻게 방지할 수 있는지 알아보도록 하겠습니다. 이 글은 제가 개인적으로 공부 기록을 남기는 Notion에서 그대로 긁어온 글이라 평소와 다른 양식을 갖고 있으니 원래 글을 읽고 싶으신 분은 링크를 참고해주시면 됩니다. Automatic Reference Counting 자동 참조 카운팅 Swift는 ARC(Automatic Reference Counting)을 사용하여 앱의 메모리 사용량을 추적하고 관리합니다. 그렇기 때문에 Swift에선 ARC 덕분에 메모리 관리에 대해 생각할 필요가 없습니다. 조금 자세하게 말하자면, ARC는 해당 인스턴스가 더 이상 필요하지 않을 때 클래스 인스턴스에서 사용하는 메모리를 자동으로 해제합니다...
[Swift] Unit Test, TDD 안녕하세요 Wody 입니다. 오늘 알아볼 것은 Unit Test와 TDD입니다. 테스트란? 더보기 테스트는 말 그대로 시험하는 것입니다. 우리가 만든 코드가 잘 작동하는지 검증해야 안심이 되죠? 만약에 테스트 없이 코드를 쭉 작성했는데, 잘 작동하지 않는다면, 어느 코드가 잘못된 동작을 하고 있는지 알 수 없을지도 모릅니다. 그렇기 때문에 우리는 코드의 단위(유닛)별로 테스트를 해야 하는 것입니다! TDD(Test-driven development TDD) TDD - 위키백과 TDD는 개발을 하는 '방법' 중 하나입니다. 우리가 어떤 목적을 가진 프로그램을 개발할 때 다양한 방법을 가지고 개발하는데요. 객체 지향 프로그래밍, 애자일 방법론, 절차 지향 프로그래밍 등등 개발에 대한 다양한 시선과 방법이 있..
[iOS] Storyboard 없이 코드로 UI 구성하기 -1- 안녕하세요! Wody 입니다. 오랜만에 포스팅을 하네요 ☺️ 비도 오고 다른 일들을 하느라 글을 못쓰고 있었는데...! 이번에 프로젝트를 하나 새로 하면서 너무나도 당연하게 하고 있던 일들을 한번 정리해보고자 왔습니다. 오늘의 주제는 바로 `Storyboard 없이 코드로 UI 구성하기` 입니다. 제가 처음 iOS 개발을 배우면서 Storyboard 없이 코드를 왜 구성해야 하는지 이해를 못했는데요. 코드로 UI를 작성하면 나에게 불필요한 UI 관련 정보와 기능을 접하지 않고, 필요한 기능만 끌어다 사용이 가능합니다! 반대로 반복적으로 사용되는 UI가 있다면, Custom View를 통해 언제든지 UI를 찍어낼 수 있다는 장점이 있습니다! 또한 복잡한 아웃렛 연결도 안해도 되구요! 암튼 코드로 UI 구성..