[iOS, Swift] Simulator Location 설정이 안 될 때 해결방법 iOS 16.1, Xcode 14.1, Swift 5, UIKit 환경에서 진행했습니다. 위 스샷과 같이 Simulate Location 에서 location 변경을 할 수 없는 오류입니다. 해결방법으로는 Edit Scheme -> Run 탭 -> Options 탭 -> CoreLocation 설정, DefaultLocation 설정을 합니다. 그 후에 빌드했을 때, 시뮬레이터에서 Location 설정하는 것을 확인할 수 있습니다 iOS/오류해결 2023.02.14
[iOS, Swift] 구조체와 클래스의 차이 구조체는 값 타입이고 클래스는 참조 타입입니다. 값 타입과 참조 타입이 다른 점은 값 타입을 넘긴다면 전달될 값이 복사되어 전달됩니다. 참조타입을 넘긴다면 참조(주소)를 복사하여 전달됩니다. 애플의 가이드라인에서는 다음 조건 중 하나 이상 해당된다면 구조체를 사용하는 것을 권장합니다. - 연관된 간단한 값의 집합을 캡슐화하는 것만이 목적일 때 - 캡슐화한 값을 참조하는 것보다 복사하는 것이 합당할 때 - 구조체에 저장된 프로퍼티가 값 타입이며 참조하는 것보다 복사하는 것이 합당할 때 - 다른 타입으로부터 상속받거나 자신을 상속할 필요가 없을 때 iOS/문법 2023.02.13
[iOS, Swift] DFS 전위, 중위, 후위 탐색 iOS 16.1, Xcode 14.1, Swift 5, UIKit 환경에서 진행했습니다. class Node { var nodeData: Int? var lt: Node? var rt: Node? init(value: Int) { nodeData = value lt = nil rt = nil } } var tree: Node = Node(value: 1) tree.lt = Node(value: 2) tree.rt = Node(value: 3) tree.lt?.lt = Node(value: 4) tree.lt?.rt = Node(value: 5) tree.rt?.lt = Node(value: 6) tree.rt?.rt = Node(value: 7) // 전위순회 func DFS_전위(root: Node?).. iOS/알고리즘 2023.02.12
[iOS, Swift] Swift 문법 배열 초기화 예제 iOS 16.1, Xcode 14.1, Swift 5, UIKit 환경에서 진행했습니다. var arrayInt = [Int](repeating: 0, count: 3) var arrayString = [String](repeating: "A", count: 3) print(arrayInt) // [0, 0, 0] print(arrayString) // ["A", "A", "A"] 2차 배열의 초기화 var graph = [[Int]](repeating: [Int](repeating: 0, count: 20), count: 20) iOS/문법 2023.02.11
[웹서버, NginX] NGINX 쿡북 "한빛미디어 활동을 위해서 책을 제공받아 작성된 서평입니다." 서버 배포를 할 때에 초기 세팅을 하는 부분이 가장 어려운 점인데, 그 부분을 1챕터에서 잘 설명해주는 것이 좋았습니다. 그리고 책에 NGINX에 대한 기능을 다 넣다보니, 책에서 설명하는 기능 중 하나가 어디에 쓰이는 것인지 잘 모를 수가 있는데, 문제 - 해결- 논의 단계로 설명해주는 글이 있어서 기능을 어디서 어떻게 활용하고 쓰이는지 알 수 있었습니다. 예를 들면 문제 - 사용자 반응을 보기 위해 버전이 두개 이상인 파일로 분기 해결 - 사용자 요청을 지정된 비율에 따라 분기하여 전달 (자세한 설명) 논의 - A/B 테스트는 전환율을 측정하는데 유용 (자세한 설명) 예시를 들며, NGINX에 대해 처음 접하는 독자도 기능이 어디에 활용될.. iOS/책 2023.02.10
[iOS, Swift] 랜덤한 숫자 구하기 iOS 16.1, Xcode 14.1, Swift 5, UIKit 환경에서 진행했습니다. let random_Int = Int.random(in: -100...100) let random_Double = Double.random(in: -5.4...6.2) print(random_Int) // - 60 print(random_Double) // -3.0702160422894833 iOS/문법 2023.02.10
[iOS, Swift] Swift 문법 compactMap 예제 iOS 16.1, Xcode 14.1, Swift 5, UIKit 환경에서 진행했습니다. nil 값을 가질 수 있는 객체를 뜻하는 Optional은 값을 감싸고 있는 객체입니다.compactMap은 이러한 감싸고 있는 객체를 제거하고 평평하게 (flatMap으로 쓰였으나, 스위프트 4버전 이후로 compactMap으로 불립니다.) 만든 후 컨테이너로 감싸주는 역할을 합니다. let optionalIntArray = [Optional(1), Optional(2), nil, Optional(3)] let result = optionalIntArray.compactMap({$0}) print(result) // [1, 2, 3] iOS/문법 2023.02.09
[Swift, 알고리즘] Swift Queue 만들기 iOS 16.1, Xcode 14.1, Swift 5, UIKit 환경에서 진행했습니다. struct Queue { private var queue: [T] = [] public var count: Int { return queue.count } public var isEmpty: Bool { return queue.isEmpty } public mutating func enqueue(_ element: T) { queue.append(element) } public mutating func dequeue() -> T? { return isEmpty ? nil : queue.removeFirst() } } iOS/알고리즘 2023.02.08
[iOS, Swift] Swift 문법 Reduce 예제 iOS 16.1, Xcode 14.1, Swift 5, UIKit 환경에서 진행했습니다. 컨테이너에서 사용할 수 있는 Reduce 함수는 두가지 종류가 있습니다. initialResult와 nextPartialResult를 쓰는 함수는 초기값이 initialResult에 들어가고 nextPartialResult에 값이 업데이트 되는 함수입니다. let sum1 = [1, 2, 3].reduce(0) { partialResult, next in // partialResult = 0, next = 1 // partialResult = 1, next = 2 // partialResult = 3, next = 3 return partialResult + next } 결과로는 sum1 변수에 6이 저장됩니다. i.. iOS/문법 2023.02.07
[Library, Metal] shader 사용방법 iOS 16.1, Xcode 14.1, Swift 5, Playground 환경에서 진행했습니다. import simd struct Vertex { var position: SIMD var color: SIMD4 } let vertices: [Vertex] = [ Vertex(position: SIMD3(-1, 1, 0), color: SIMD4(1, 0, 0, 1)), Vertex(position: SIMD3(-1, -1, 0), color: SIMD4(0, 1, 0, 1)), Vertex(position: SIMD3(1, -1, 0), color: SIMD4(0, 0, 1, 1)), Vertex(position: SIMD3(1, 1, 0), color: SIMD4(1, 0, 1, 1)) ] 기존에 있.. iOS/라이브러리 2023.02.06