개발
-
Swift 네트워크 구조 잡기개발/Swift 2024. 4. 8. 15:47
기본적인 구조는 APIClient, Request, Service가 있다. APIClient 객체가 있다. APIClient 는 alamofire를 직접 호출하는 역할을 한다. api호출에 공통적인 로직이 있는경우 처리에 포함시켜주면 중복코드를 막을수 있다. let response = await manager.request(request.url, method: request.method, parameters: request.parameters, encoding: request.encoding, headers: request.headers) .validate() .serializingData() .response /// 실패 처리 ( 성공은 생략 ) case let .failure(error): if st..
-
Xcode 정적 라이브러리 생성과 기능 모듈화개발/Swift 2024. 4. 7. 21:26
피쳐 모듈화 프로젝트의 규모가 커지다 보면 앱의 project 가 커지고 무거워짐 빌드 시간이 늘고 다양한 사람들이 작업하면 project file confilct도 자주 일어남 특정한 기능에 따리 하나의 모듈을 만들어 그 안에 구현하고 앱 에서 해당 기능들을 import 하여 사용함 모듈 각각의 project file이 존재하여 conflict 문제가 없고 첫 빌드 이후에 빌드 속도가 빨라짐 관련한 코드가 분리되었기 때문에 의존성 관리에도 도움을 많이줌 분리 방식 1. Util 같은 Helper 모듈을 구현하여 앱에서 Static 하게 사용 ex> RemoteConfig, Contact, Auth 2. 여러 기능에 따라 분리 ex>유저관리, 결제, 공지, 이벤트 3. Core한 역할을 하는코드 분리 e..
-
[Swift] suspend resume partial function for 함수명 해결 방법개발/Swift 2024. 3. 1. 13:11
“suspend resume partial function for 함수명” 라는 에러 발생 public func isEnabled(_ key: Key) -> Bool { return dict[key] } let keyword is a constant and, therefore, read-only and thread-safe. When a variable is declared as var it becomes mutable and not thread-safe unless the data type is specifically designed to be thread-safe when mutable. let 쓰면 안전한데 var 쓰면 thread safe 하지 않음 특히 배열, 딕셔너리는 var 인경우 안전하지 ..
-
[HIG] Privacy 읽기개발/Swift 2023. 9. 29. 19:52
프라이버시는 매우 중요하다 , 사람들의 데이터를 보호하는것은 필수적이다. 앱을 배포,업데이트 하면 수집하는 개인 정보 관련 데이터에 대한 세부 정보를 제공해야 한다. 앱스토어 앱 페이지에 가면 이렇게 볼수 있음, 사람들이 앱 다운받기전에 결정 하도록 할수 있다. 꼭 필요한 데이터에만 접근요청 하라 - 실제 필요 기능 보다 더 요구 하거나 앱에대한 흥미를 갖기 전에 데이터를 요청하면 사람들이 앱을 신뢰하지 않음 수집 데이터 에대한 투명성 - 유저 데이터를 어떻게 사용 하는지에 대한 계획을 사람들이 이해하지 못하면 정보를 공유하지 않을수 있다. 사람들이 이메일 가리기 를 하는것에 대해 이해 존중하고 앱 트래킹에 대한 의무를 이해하라 가능한경우 device에서 데이터를 처리하라 - 원격 서버로 돌아돌아 쓰지 ..
-
[HIG] Button 읽기개발/Swift 2023. 9. 25. 23:51
버튼은 액션을 일으킨다 버튼은 세 가지 속성(스타일 ,콘텐츠 ,역할)을 결합하여 기능을 명확하게 전달합니다: In addition to all-purpose buttons, many common button styles — like Info, Close, and Contact Add — perform familiar tasks throughout the system. There are also many button-like components that have distinct appearances and behaviors for specific use cases, like toggles, pop-up buttons, and segmented controls. 닫기 , 연락처추가 ,정보 같은 공통적인 버튼..
-
Swift 데이터 감싸져 있는 안에 있는 값 꺼내서 Decode하기개발/Swift 2023. 7. 22. 16:07
{ "identifier": "dsdfdsf", "name": "james", "product: { "expiration_poloicy": { "expire" : 90 } } } 위와 같은 데이터를 서버로부터 받을때 원하는 데이터인 expire는 두번 감싸져 있다. 해당 데이터를 decoding을 하기위해 Entity를 총 세개나 만들어야 원하는 데이터값을 받을수 있을것이다. struct People: Decodable { var identifier: String var name: String var product: Product } struct Product: Decodable { var expirationPlicy: ExpirationPlicy //public init(from decoder: Dec..
-
UISearchbar, UISearchController 기초 사용법개발/Swift 2023. 7. 2. 14:45
WWDC21에 서치바라는것을 발견했다. 그동안 textfield를 가지고 서치바를 구현했는데 이런것을 지원하고 있는지도 몰랐다. 타겟 버전을 높게 하지 않아도 서치바를 사용할수있다. iOS8 이상 그럼 텍스트필드로 만드는것 보다 뭐가 더 유리할지 직접 사용해보자 UISearchController라는게 있다. let searchController = UISearchController() navigationItem.searchController = searchController 이렇게만해도 사용가능하다 그러면 상단에 서치바가 위치한다. 따로 addview , constraint하지 않아도 됨 class ViewController: UIViewController, UISearchResultsUpdating {..
-
Rxswift combineLatest 에러 The compiler is unable to type-check this expression in reasonable time개발/Swift 2023. 7. 1. 13:47
The compiler is unable to type-check this expression in reasonable time; try breaking up the expression into distinct sub-expressions Rx - combine latest 에 9개 이상의 observable을 넣었더니 에러가 발생 CombineLatest를 쓸떄 8개까지만 쓸수가 있다 이를 해결하기위해 여러 더많은 Observable을 쓰려면 combine 을 하고 그거를 가지고 combine 해줘야한다. let searchCombinedObservable = Observable.combineLatest(searchKeyword.asObservable(), eFriendList.asObservable(..