본문 바로가기

Swift

(13)
[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를 통해 클..
[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] 옵셔널 Optional 안녕하세요, Wody입니다. 오늘은 옵셔널에 대해 공부해봤습니다. 코딩을 하다보면 많이 사용하던 개념인데 이번에 제대로 정리하고 넘어가네요. 이번에도 노션에 작성한 원본 글이 있으니 이쁜 디자인으로 보고 싶으신 분들은 아래 노션 링크를 참고해주세요. 노션 링크 Apple Developer - Optional 카테고리 : Swift - Swift Standard Library - Numbers And Basic - Optional 옵셔널 선언 @frozen enum Optional 열거형의 내부 구조 @frozen public enum Optional : ExpressibleByNilLiteral { /// The absence of a value. /// /// In code, the absence of..
[Swift] 네트워크와 무관한 URLSession Unit Test 안녕하세요 Wody 입니다. 오늘은 네트워크와 무관한 URLSession의 Unit Test에 대해 공부했습니다. 구글링을 해봤는데 대부분의 예제는 Alamofire를 이용하고 있어서 조금 어려웠는데 다른 분들께 도움이 됬으면 좋겠습니다. 원본 노션 링크 네트워크와 무관한 URLSession Unit Test를 하는 목적 유닛 테스트는 빠르고 안정적으로 진행되어야 합니다. 실제 서버와 통신하게되면 단위 테스트의 속도가 느려질 뿐만 아니라 인터넷 연결에 의존하기 때문에 테스트를 신뢰할 수 없습니다. 실제 서버와 통신하면 의도치 않은 결과를 불러올 수 있습니다. 예를 들어 우리는 서버에 Item 을 등록하는 코드를 테스트하길 원합니다. 그런데 실제 서버에 코드를 호출하면 데이터가 실제로 등록되기 때문에 의도..
[Swift] URLSession 안녕하세요, Wody입니다. 오늘은 URLSession에 대해서 공부했습니다. (사실 지난 주말에 공부했는데 공부하고 나면 진이 빠져서 블로그에 업데이트를 안하네요...) 이 글은 노션에서 작성된 글을 그대로 가져온 것입니다. 이쁘게 보고 싶은신 분은 아래 노션 링크를 참고해주세요 https://wodylikeios.notion.site/URLSession-d219933cf73640ed882475b0f614ba5f URLSession Apple Developer - URLSession wodylikeios.notion.site Apple Developer - URLSession Apple Developer Documentation developer.apple.com URLSession 네트워크 데이터 전..
[Swift] ARC와 순환 참조 안녕하세요, Wody 입니다. 이번 글은 ARC와 순환 참조가 무엇이며, 어떻게 방지할 수 있는지 알아보도록 하겠습니다. 이 글은 제가 개인적으로 공부 기록을 남기는 Notion에서 그대로 긁어온 글이라 평소와 다른 양식을 갖고 있으니 원래 글을 읽고 싶으신 분은 링크를 참고해주시면 됩니다. Automatic Reference Counting 자동 참조 카운팅 Swift는 ARC(Automatic Reference Counting)을 사용하여 앱의 메모리 사용량을 추적하고 관리합니다. 그렇기 때문에 Swift에선 ARC 덕분에 메모리 관리에 대해 생각할 필요가 없습니다. 조금 자세하게 말하자면, ARC는 해당 인스턴스가 더 이상 필요하지 않을 때 클래스 인스턴스에서 사용하는 메모리를 자동으로 해제합니다...
[Swift] Codable, JSONEncoder, JSONDecoder 안녕하세요 Wody 입니다! 이번 포스팅에서는 Swift에서 JSON 데이터 유형을 다루는 방법 중 하나인 Codable, JSONEncoder, JSONDecoder를 알아보겠습니다. 3가지를 알아보기 위한 공식 문서 Apple Developer - Archives and Serialization Codable Codable은 Decodable 과 Encodable을 합친 typealias입니다. 그래서 Codable을 알기 위해선 Encodable & Decodable을 알아야 합니다. Encodable과 Decodable은 JSON과 같은 데이터 유형을 인코딩, 디코딩 가능하게 만드는 프로토콜입니다. 자세한 사용법은 공식문서에도 친절히 나와있습니다. 기본적으로 Swift에선 인코딩과 디코딩을 구분하..