일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- view
- Session
- Notification
- window
- Archive
- Firebase
- error
- rxswift
- github
- FLUTTER
- Realm
- darkmode
- appstore
- iOS16
- 이미지
- Xcode
- Git
- mac
- JPA
- Code
- 개발자
- Swift
- UIButton
- geofencing
- Apple
- 웹뷰
- 한글
- IOS
- MacOS
- SwiftUI
- Today
- Total
목록분류 전체보기 (269)
EEYatHo 앱 깎는 이야기
고차함수 ( Higher-order function ) 함수를 파라미터로 받거나, 함수를 리턴하는 함수 Dart에서 제공하는 고차함수를 셀수도 없이 많다. 자주 사용하는 순으로 정리한다. map ( + mapIndexed ) where reduce fold forEach ( + forEachIndexed ) Iterable 이란? 들어가기 전에, Dart의 대부분 컬랙션에 적용하는 고차함수는 Iterable을 반환한다. Iterable은 Dart에서 직렬적으로 원소들을 엑세스 할 수 있는 컬랙션들의 최상위 추상 클래스이다. ( List, Set, Map 등 ) ( 원문 : A collection of values, or "elements", that can be accessed sequentially. ..
고차함수 ( Higher-order function ) 함수(클로저)를 파라미터로 받거나, 함수를 리턴하는 함수 Swift에서 제공하는 고차함수를 셀수도 없이 많다. 자주 사용하는 순으로 정리한다. map filter reduce forEach compactMap flatMap map Array에서 모든 값들에게 같은 연산을 적용한 새로운 Array를 만든다. let cast = ["Vivien", "Marlon", "Kim", "Karl"] let lowercaseNames = cast.map { $0.lowercased() } // ["vivien", "marlon", "kim", "karl"] let letterCounts = cast.map { $0.count } // [6, 6, 3, 4] fi..
1. package:flutter/foundation.dart 사용 import 'package:flutter/foundation.dart'; if (defaultTargetPlatform == TargetPlatform.iOS) { // ios } else if (defaultTargetPlatform == TargetPlatform.android) { // android } ... /// fuchsia, linux, macOS, windows 2. dart:io 사용 import 'dart:io'; if (Platform.isIOS) { // iOS } else if (Platform.isAndroid) { // android } ... /// isLinux, isMacOS, isWindows, ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/RK5b8/btrMacNwxO5/aUZu34kU2UPzVDQOw95041/img.png)
배경 설명 아래처럼, 네비게이션바에 커스텀 뷰를 넣는 식으로 사용하고 있었는데 navigationItem.titleView = myCustomView iOS16 에서 네비게이션바의 UI가 깨졌다. 버튼들이 클릭이 안되고, 가운데로 몰리고, 보이지 않는 경우도 있었다. 가운데로 검색바는 찌그러졌었다. iOS16 에서 UIKit 이 변경된게 무엇인지 발표하는 WWDC 도 살펴보았고, iOS16, navigation Bar 기타 등등.. 여러 구글링을 해도 답이 보이지 않았다. ( 이런거나 계속 나오고 -ㅅ- ) 삽질 끝에 발견한 현상 iOS16 이전에는, titleView 의 부모가 _UINavigationBarContentView 였다. _UINavigationBarContentView 는 titleVie..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/l5Pjn/btrJLSKiz0b/qTAWKKkUJ3gN3KFpFHk77K/img.png)
Flutter로 개발한 앱이 iOS 디바이스에서 실행하려하면 아래 메세지의 경고창이 뜨고 하얀 화면만 보이게 된다. 한국어 : 개발자를 확인할 수 없기 때문에 'iproxy'을(를) 열 수 없습니다. 영어 : macOS cannot verify the developer of 'iproxy'. 처음엔 코드사이닝 문제인 줄 알았는데, 그냥 macOS 보안 문제였다. 해결 방법 : 시스템 환경설정 -> 보안 및 개인 정보 보호 -> "확인 없이 허용" 클릭
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/wG7Ha/btrF3ZH4yWW/TgVI1Hg14zomswRIJS2Ll0/img.png)
파이어베이스에서 Crashlytics를 사용하려면 디버그 기호파일(dSYM)을 업로드 해야한다. 수동으로 dSYM파일을 다운 or 추출해서 업로드하는 방법도 있지만, 빌드 마지막 단계에 Xcode에서 제공하는 Run Script를 삽입하여, 자동으로 업로드하는 방법이 있다. 관련 링크 https://firebase.google.com/docs/crashlytics/get-started?authuser=0&hl=ko&platform=ios#uikit https://firebase.google.com/docs/ios/installation-methods?authuser=0&hl=ko 1. dSYM 추출 여부 세팅 Build Settings dSYM 검색 Debug Information Format에서 Deb..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/XjMbT/btrFRcNBoUe/geoBRix7BiyEkhiFQyB6S1/img.png)
아래의 플러터 코드랩 실습 중에, https://codelabs.developers.google.com/codelabs/flutter-boring-to-beautiful#2 This GoRouteInformationParser needs to be used with GoRouteInformationProvider, did you forget to pass in GoRouter.routeInformationProvider to the Router constructor? 'package:go_router/src/go_route_information_parser.dart': Failed assertion: line 148 pos 13: 'routeInformation is DebugGoRouteInformat..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ec0QqF/btrFlFowpnX/8WlhbYVeysZcjjgfi808Hk/img.png)
UIImageView 이미지 다운로드 구현 Placeholder Image 지원 Image 넣는 부분은 main queue로 작업 외부 라이브러리 없이 URLSesstion dataTask 사용 extension UIImageView { func imageDown(urlStr: String, placeholderImage: UIImage? = nil) { func _setImage(image: UIImage?) { DispatchQueue.main.async { [weak self] in self?.image = image } } // 캐싱 체크 if let image = ImageCacheManager.shared.getImage(urlStr) { _setImage(image: image) return..