목록개발 (25)
개발을 잘하고 싶은 주니어?
JSON Parsing 하기 class JSONSerialization : NSObject JSON을 Foundation objects로 변환하거나 그 반대를 하게 해주는 객체입니다. Foundation object를 JSON으로 바꾸기 위해서는 다음의 네 가지 조건을 지켜야 합니다. 1. top level object는 NSArray나 NSDictionary여야 합니다. 그렇지 않다면 fragmentsAllowed 옵션을 추가해줘야 합니다. 2. 모든 obejcts는 NSString, NSNumber, NSArray, NSDictionary or NSNull 중 하나입니다. 3. 모든 딕셔너리 key는 NSString입니다. 4. Numbers는 NaN이거나 무한대이면 안됩니다. Swift 4.0 전까..
flickr api를 이용해서 키워드를 입력하면 화면에 해당 키워드의 사진들이 보이게 할 예정입니다. 그리고 이번 실습에서는 MVVM 패턴으로 구현해보았습니다. (맞게 구현했는지는 잘 모르겠습니다..) https://www.flickr.com/services/api/explore/flickr.photos.search 에서 키워드를 입력해서 호출하면 아래에 주소가 뜹니다. 거기서 api key를 얻어서 사용하면 됩니다. Flickr Api Explorer - flickr.photos.search 유용한 값 최근 공개 사진 ID: 51712997316 - snapshot 51712997526 - 2021 BlazinFast Football (364 of 752).jpg 51713867900 - Casamen..
https://stackoverflow.com/questions/61501298/xcrun-error-unable-to-find-utility-xctest-not-a-developer-tool-or-in-path xcrun: error: unable to find utility "xctest", not a developer tool or in PATH I am using Xcode command line tools instead of XCode app in my MAC. When i use swift --version I get Apple Swift version 5.2.2 (swiftlang-1103.0.32.6 clang-1103.0.32.51) I cloned a project with ... st..
그럼 앞서서 봤던 이론에 더해서 실습도 해보겠습니다. 터미널에서 swift package를 입력하면 명령어들의 리스트를 볼 수 있습니다. 우리는 주로 다음의 명령어를 사용합니다. swift package init : 새로운 패키지를 생성합니다. swift package update : 패키지 내의 의존성을 업데이트합니다. swift package generate-xcodeproj : 패키지의 xcode 프로젝트를 생성합니다. 이번 예시에서 랜덤 숫자를 프린트 하는 package를 만들어보겠습니다. Package 생성 Package는 하나 이상의 라이브러리와 executable을 가지고 있는 repositories입니다. 각 package는 Package.swift manifest 파일을 가지는데, 이것은..
Swift Package Manager를 공부하기에 앞서서 공부해야 할 개념을 먼저 알아보겠습니다. Module Swift에서는 코드를 모듈화해서 이곳저곳에서 사용하도록 합니다. 프로그램에서는 dependencies를 통해서 다른 곳의 모듈을 import 하기도 합니다. macOS의 Darwin같이 시스템이 제공해주는 모듈도 있고, 의존성을 통해 다운로드된 모듈도 있습니다. 프로그래밍 과정에서 모듈을 사용할 때에는 특정 상황을 해결하기 위해 사용할 때도 있고 해당 상황과 다른 상황에서도 사용될 수 있습니다. 예를 들어서 네트워크 요청 기능을 제공하는 모듈은 사진 공유 앱이나 날씨 앱에서 사용될 수 있습니다. (전혀 다른 앱이지만 하나의 공통된 모듈을 사용할 수 있다는 의미) 이렇게 모듈을 사용하면 같은 ..
Framework 개발 공부를 하다 보면 프레임워크라는 단어를 많이 접하게 됩니다. 이 전에는 그냥 특정 기능을 구현하고 싶을 때 사용하는 메서드나 프로퍼티들을 모아 놓은 패키지? 정도라고 생각하고 그냥 넘어갔습니다. (UIKit 도 UI 관련한 메서드나 프로퍼티들을 지원하고 있는 프레임워크입니다.!) 하지만 정확한 의미를 알기 위해서 애플 문서를 찾아보았습니다. 링크는 여기 ⬇️ https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPFrameworks/Concepts/WhatAreFrameworks.html#//apple_ref/doc/uid/20002303-BBCEIJFI What are Frameworks? Wha..
의존성이란? A클래스와 B클래스가 있다고 가정을 해볼 때, B클래스에서 A클래스를 사용하면 의존성이 생긴다고 합니다. class Color{ var currentColor: UIColor = .red func printColor(){ print(currentColor) } } class Car{ var carColor = Color() } 위와 같이 Car클래스에서 Color클래스를 사용하고 있으므로 의존성이 존재합니다. 의존성 주입 그럼 의존성 주입이란 무엇일까요? class Color{ var currentColor: UIColor init(currentColor: UIColor){ self.currentColor = currentColor } func printColor(){ print(curren..
extension UIColor { convenience init(hexString: String, alpha: CGFloat = 1.0) { let hexString: String = hexString.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines) let scanner = Scanner(string: hexString) if (hexString.hasPrefix("#")) { scanner.currentIndex = scanner.string.index(after: scanner.currentIndex) } var color: UInt64 = 0 scanner.scanHexInt64(&color) let mask = 0x000000FF let..
URLSessionTask session task에는 세가지 타입이 있습니다. URLSessionDataTask : 서버에서 데이터를 검색하기 위한 GET요청을 할 때 사용합니다. URLSessionUploadTask : 디스크의 파일을 웹에 업로드하기 위해서 사용합니다. (POST, PUT) URLSessionDownloadTask : 파일을 다운로드할 때 사용합니다. 또한, task를 중지, 재개, 취소할 수도 있습니다. 일반적으로, URLSession은 두가지 방법으로 데이터를 리턴합니다. 1. task가 끝나고 나서, completion handler의 파라미터를 통해 데이터를 리턴함 2. session delegate 메서드를 호출해서 데이터를 리턴함 DataTask & DownloadTask
앞서 Diffable Data Source 공부하기 - 1 (이론)에서 알 수 있듯이 diffable은 현재 화면에 보이는 아이템을 업데이트할 때마다 collection view가 자동으로 업데이트된 collection과 이전의 것의 차이를 계산해줍니다. 또한 data source의 값과 collection view가 알고있는 값의 동기화도 해주고 그런 데이터 변화의 관리도 맡아서 합니다. 예시 동영상 Section, Item 클래스 생성 UICollectionViewDiffableDataSource는 두개의 generic 타입을 가집니다. (Section 타입과 item 타입) section type은 다음과 같이 class 타입으로 만들어 줍니다. 만약 고정된 개수와 고정된 섹션을 가진다면 enum ..