일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- ARC
- Animation
- swiftUI
- objc
- 문자열
- stanford SwiftUI
- swift5
- leetcode
- ReactiveX
- ios
- SWIFT
- Deep learning
- objective-c
- Xcode
- Algorithm
- iOS SwiftUI
- 딥러닝
- 알고리즘
- 머신러닝
- rxswift
- 스위프트
- 책 추천
- 애니메이션
- 책
- RX
- wwdc
- 스위프트UI
- string
- 책 후기
- 독서
- Today
- Total
목록SWIFT (116)
THIS IS ELLIE
이전에 커스텀한 버튼을 만든 적이 있었는데요 저는 제약조건을 수정해서 확장시켰는데 깃을 보다가 Ale Patron이 분의 방식이 좋아 보여서 기록해놓으려 합니다. 기존 코드에서 맘대로 조금 수정을 했습니다. 버튼이 정중앙에 배치되어있는데 오른쪽 하단으로 옮겼고 색상을 변경했습니다. 버튼의 텍스트와 함수명을 변경했습니다. 버튼 사이즈 상수는 ButtonPanelView에서만 사용되고 있어 클래스 내부로 들고 왔습니다. (내부로 들고 오면서 접근 제어자 fileprivate에서 private로 변경했습니다) 프로토콜은 클래스만 사용할 수 있도록 class로 수정했습니다. 버튼에 쉐도우 레이어는 제거했습니다. 그럼 다시 시작. class ButtonPanelView: UIView { private let bu..
Landmark구조체가 있다고 가정해본다. struct Landmark { var name: String var foundingYear: Int } Landmark에 Codable프로토콜을 채택한다. Codable프로토콜(Decodable, Encodable)을 채택하면 따로 선언하지 않아도 Codable메서드인 init(from: ) 및 encode(to :)를 지원한다. struct Landmark: Codable { var name: String var foundingYear: Int // Landmark now supports the Codable methods init(from:) and encode(to:), // even though they aren't written as part of i..
오늘도 IDE 없이 푸는 연습을 해보았습니다. 문제가 조금이라도 어려워지면 디버깅이 필요해서 IDE 없이 푸는 게 어렵더라고요. 그래서 차근차근 연습하려 합니다. 오늘 풀 문제는 230번이고 중간 난이도고 62.8%의 성공률을 보이네요. Kth Smallest Element in a BST인데 (이진 탐색 트리) BST가 BTS로 보이는 거..ㅎㅎ뭐지 문제를 살펴봅시다. 이진 탐색 트리의 루트와 k가 주어지면 트리에서 k번째로 작은 걸 리턴해주면 됩니다. 예시를 보면 이해가 확 갈 겁니다요. 제가 푸려는 방법은 중위 순회를 하면서 배열에 값을 넣고 배열에서 k번째를 리턴해주는 방법으로 풀어보려 합니다. 그리고 문제에서는 아래와 같이 노드에 대한 구현이 주어집니다. public class TreeNode ..
오늘은 SceneDelegate 지우는 것에 대해서 남겨보려 합니다. 가끔 프로젝트 지울 때 하는 작업인데 다시 하려니 가물가물해서 정리하는 게 좋을 것 같더라구요. 먼저 프로젝트를 생성해줍니다. 스토리보드 인터페이스를 사용합니다. 프로젝트가 생성되면 info.plist파일에서 Application Scene Manifest를 지워줍니다. 과감히 삭제 고고 다음 AppDelegate.swift파일로 와줍니다. 그리고 window변수를 추가해줍니다. 그리고 AppDelegate.swift파일에 UISceneSession Liftcycle부분을 지워줍니다. 아래 보이는 것 다 지우시면 됩니다. 그리고 마지막 SceneDelegate.swift파일을 지워줍니다. 그리고 빌드하면 성공! 정리하자면 아래와 같습니..
Property Wrappers @something은 다 프로퍼티 래퍼이다. 각 Property Wrapper는 구조체이며 이는 'template'동작을 캡슐화한다. 예를 들어 @State는 변수가 힙에 살도록 하고 @Published는 변경이 있을 때 publish 하도록 하고 @ObservedObject는 published 변경이 감지되면 뷰를 다시 그리도록 하고 Property Wrapper는 이 구조체들을 생성하고 사용하기 쉽게 해준다. Property Wrapper 안 쓰면 아래처럼 사용해야 한다. Property Wrapper를 사용하기 위해 구조체를 만들고 그에 맞게 구현해줘야 한다. 또한 Property Wrapper안에 또 다른 변수가 존재하는데 projectedValue이다. 이 pro..
앱을 유지할 수 있는 여러 가지 방법 - FileManager - CoreData - CloudKit - UserDefault 오늘 사용할 유저디폴트를 살펴본다. 유저 디폴트를 사용하기 위해서 인스턴스가 필요하다. let defualts = UserDefaults.standard 데이터 저장하는 방법 defaults.set(object, forKey: “SomeKey”) 여기서 object는 property list여야 한다. (Bool, Int, Double, String 등) 데이터 추출하는 방법 let i: Int = defaults.integer(forKey: “MyInteger”) let d: Data? = defaults.data(forKey: “MyData”) let a = array(for..
오늘은 200번 Number of Islands문제를 풀어보겠습니다. 난이도는 중간 난이도며 성공률은 49%로 꽤 높습니다. 문제는 아래와 같습니다. m * n의 2차원 배열 grid이 주어지고 1은 땅이고 0은 물이며, 섬의 개수를 리턴해줘야 합니다. 아래와 같은 예시를 살펴보겠습니다. 1이 땅이고 0이 물이니 섬을 개수를 세기 위해서 1의 시작점을 봅니다. 1로만 이루어져 있고 0에 둘러싸여 있으면 섬이라고 생각하면 됩니다. 섬만 표시하다면 아래와 같이 3개의 섬이 있고 정답으로 3을 리턴해주면 됩니다. 코드를 살펴보겠습니다. 저는 전형적인 방법 DFS로 풀었습니다. import Foundation /// 200. Number of Islands let xArr = [1,0,-1,0] let yArr..
알고리즘 문제를 풀다가 좋은 솔루션을 배우게 되어 포스팅하려 합니다. 오늘은 포스팅할 문제는 189번이고 난이도는 중간 난이도입니다. 문제를 살펴봅시다. 배열이 주어지면 배열을 오른쪽으로 k 단계씩 회전합니다. 여기서 k는 음수가 아닙니다. - 가능한 많은 해결책을 찾아보세요. 이 문제를 해결하는 방법은 적어도 3가지 존재합니다. - 너는 인플레이스로 공간 복잡도 O(1)로 처리할 수 있니 제약은 아래와 같습니다. 예제를 살펴보겠습니다. 아래 코드는 제가 처음 풀었던 방식입니다. func rotate(_ nums: inout [Int], _ k: Int) { for _ in 0.. 0 && k > 0 else { return } let k = k % nums.count guard k != 0 else {..