일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- OSLog
- COMMIT
- it
- tip
- xcode
- SwiftGen
- Extentsion
- Equatable
- toyproject
- keyWindow
- pubspec
- basic
- GIT
- IOS
- UIAccessibility
- enumerations
- algorithm
- listview
- Leetcode
- flutter
- github
- swiftlint
- reetcode
- dart
- Widget
- designPattern
- ToDoRim
- pubspec.yaml
- protocol
- Swift
- Today
- Total
목록IOS (55)
수니의 개발새발

저의 첫번째 토이프로젝트 ToDoRim을 소개합니다. ToDoRim - 할일 관리, 미리 알림 "잊기 전에 먼저 두드려 드릴게요." ToDoRim은 할일을 관리하고, 미리 알림을 설정할 수 있는 앱 입니다. 주요 기능 쉽게 할일을 관리해보세요. 한번 탭으로 완료 체크 (+) 버튼으로 새 할일 추가 왼쪽으로 밀어서 수정, 삭제 그룹별로 할일을 관리해보세요. 그룹별로 감성적인 그라데이션 배경을 선택할 수 있습니다. 그룹별 할일 완료 현황을 퍼센트로 확인할 수 있습니다. 시간 알림을 설정해보세요. 매일, 매주, 매월 반복 설정이 가능합니다. 위치 알림을 설정해보세요. 장소에 도착하거나 출발할 때 알림을 설정할 수 있습니다. 반경을 지정해 디테일한 설정이 가능합니다. 딱딱한 테마는 이제 그만! 그라데이션 배경으..
String 문자열 String의 기본 기능 접두어 hasPrifix() let blog: String = "DevSuni Blog" print(blog.hasPrefix("Dev")) // true print(blog.hasPrefix("Suni")) // false 접미어 hasSuffix() let blog: String = "DevSuni Blog" print(blog.hasSuffix("Blog")) // true print(blog.hasSuffix("blog")) // false - 대소문자 구분 대소문자 변환 .uppercased() / .lowercased() let name: String = "suni" print(name.uppercased()) // SUNI let name: Str..
📌 이번 글은 AppStore 심사 리젝 히스토리를 적어보려고 합니다. 매번 신규 앱을 올릴 때마다 까다로운 애플 심사에 심장이 조마조마합니다. 지금도 회사에서 앱 출시 준비하는데, 벌써 3번째 리젝에 즐거워(괴로워)하고 있습니다. ᕕ( ᐛ )ᕗ App Store 심사 지침 먼저 앱 출시를 준비하신다면, 심사 지침을 읽고 준비 중인 앱에 리젝 사유가 있는지 검토하시는 것을 권고드려요. App Store 심사 지침 - Apple Developer App Store 심사 지침 앱은 세상을 바꾸고 있습니다. 앱을 통해 사람들의 삶은 풍요로워지고, 여러분과 같은 개발자들은 전에 없던 새로운 방식으로 혁신을 이루고 있습니다. 이에 따라 App Store는 수 developer.apple.com 리젝 히스토리 로그..
변수 (var) var [변수명]: [데이터 타입] = [값] 상수 (let) let [변수명]: [데이터 타입] = [값] 상수를 사용하는 이유는 가독성 - 상수는 차후 값의 변경을 신경 쓰지 않아도 된다는 것을 직관적으로 알 수 있다. 타입 추론 - 데이터 타입은 생략하면 스위프트는 타입을 추론하여 타입을 지정해준다. ❗️ 타입 지정을 권고! ❓ 처음부터 타입을 명시하는 편이 시간을 더 절약할 수 있다. - 타입 추론에 의지하여 코딩했을 때 발생하는 오류를 찾아내는 것 보다 타입추론은 컴파일에 더 오랜 시간이 걸릴 수 있다. - 컴파일러가 컴파일할 때 타입을 추론해야 한다. 🙋🏻♀️ 참고 야곰, ⌜스위프트 프로그래밍: Swift5⌟, 한빛미디어(2019)

📌 이번 글은 코드에서 Storyboard와 ViewController를 접근하는 방법입니다. 👩🏻💻 예제 storyboardName : Storyboard 파일의 이름 storyboardId : Storayboard > ViewController의 id 코드에서 ViewController를 참조해 화면 이동시키기. let storyboardName = "Main" let storyboardId = "MainVC" let sb = UIStoryboard(name: storyboardName, bundle: Bundle.main) let vc = sb.instantiateViewController(withIdentifier: storyboardId) // MainVC로 화면 이동 self.navigati..
📌 이번 글은 두 날짜를 비교해서 과거/현재/미래를 구하는 방법입니다. DateFormatter() extension Date { /** # dateCompare - Parameters: - fromDate: 비교 대상 Date - Note: 두 날짜간 비교해서 과거(Future)/현재(Same)/미래(Past) 반환 */ public func dateCompare(fromDate: Date) -> String { var strDateMessage:String = "" let result:ComparisonResult = self.compare(fromDate) switch result { case .orderedAscending: strDateMessage = "Future" break case .or..
📌 이번 글은 시간을 다른 형태로 변형하는 방법입니다. DateFormatter() extension Date { /** # formatted - Parameters: - format: 변형할 DateFormat - Note: DateFormat으로 변형한 String 반환 */ public func formatted(_ format: String) -> String { let formatter = DateFormatter() formatter.dateFormat = format formatter.timeZone = TimeZone(identifier: TimeZone.current.identifier)! return formatter.string(from: self) } } Date extension에..
📌 이번 글은 현재 시간의 밀리초를 구하는 방법입니다. timeIntervalSince1970 Int(Date().timeIntervalSince1970 / 1000.0) 현재 시간의 밀리초를 구하는 코드입니다. 👩🏻💻 사용 예제 import Foundation extension Date { /** # currentTimeInMilli - Note: 현재 시간의 밀리초 반환 */ public static func currentTimeInMilli() -> Int { return Date().timeInMilli() } /** # timeInMilli - Note: timeIntervalSince1970의 밀리초 반환 */ public func timeInMilli() -> Int { return Int..