본문 바로가기

분류 전체보기

(19)
[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] UILabel에 취소선 (strikethroughStyle) 적용하기 UILabel에 취소선 적용하기 Apple Developer - UILabel.attributeText Apple Developer - NSAttributeString Apple Developer - NSMutableAttributedString UILabel의 text에 속성(attribute)를 적용시키려면 UILabel에 있는 attributeText 프로퍼티를 변경해주면 된다. 그런데 attributeText 프로퍼티는 NSAttributedString 클래스 타입의 값으로 이에 맞는 값을 만들어 적용해야 한다. 실제 코드에서 어떻게 만들면 되는지 알아보자 적용하기 let testLabel: UILabel = { let label = UILabel() let label.text = "test La..
[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 :..
읽기 쉬운 코드를 짜기 위한 고민 Naver Engineering - 영어 변수명을 잘 지어보자 영어 변수명을 잘 지어보자 NAVER Engineering | - 발표자: 노수진(NAVER LABS) - 발표일: 2018.8. tv.naver.com 야곰 아카데미를 졸업하고 2주 정도 알고리즘 문제를 풀면서 고민이 생겼습니다. 바로 코드의 이름과 더불어 가독성을 신경쓰지 않은 것 입니다. 알고리즘 문제풀이는 특정 기능을 제한 시간 내에 만들어야 하는 특징이 있습니다. 그래서 자연스럽게 문제를 풀다보면 코드의 이름에 고민을 하기보다 문제를 어떻게 풀 수 있는지 주로 고민하며, 알고리즘 문제풀이 특유의 문화(?) 중 하나가 코드 라인의 수를 줄이는 것인데 조금은 강박적으로 코드 라인을 줄이려다 가독성을 잃어버린 경우도 있었습니다. 이 문제점..
[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 을 등록하는 코드를 테스트하길 원합니다. 그런데 실제 서버에 코드를 호출하면 데이터가 실제로 등록되기 때문에 의도..