728x90

분류 전체보기 290

[RxDataSources] RxDataSources 맛보기

안녕하세요. 이번에는 RxDataSources에 대해 알아볼게요. (전체 코드는 여기를 참고해주세요 ^^) # RxDataSources란? 이름에서부터 알 수 있듯이, RxDataSources는 RxSwift 용 UITableView와 UICollectionView의 DataSources 관련 라이브러리입니다. RxSwift와 RxCocoa만을 사용해서 UITableView를 만든다고 했을 때, 아래 코드는 가장 쉽고 빠르게 구현한 방법일 거예요. 다만, 여러 Section이 존재하는 경우 또는 insert, move, delete 할 때 애니메이션이 들어가야 하는 경우는 처리할 수가 없어요. 이때 RxDataSources를 사용하면 쉽게 처리할 수 있다고 합니다ㅎㅎ RxDataSources는 크게 아래..

Rx 2022.11.06

[SwiftUI] '__designTimeInteger(_:fallback:)' is only available in iOS 13.0 or newer 에러 해결방법

안녕하세요. 저는 요즘 UIKit으로 개발할 때 (귀찮긴 하지만) 아래처럼 같은 파일 안에 UIViewControllerRepresentable과 PreviewProvider를 사용해서 프리뷰로 바로바로 볼 수 있도록 구현해놓는데요. 최근에 macOS 업데이트하면서 Xcode도 13 -> 14로 올렸더니 갑자기 SwiftUI 프리뷰에서 이런 에러가 발생했습니다. (빌드했을 때는 정상 동작하구요..) '__designTimeInteger(_:fallback:)' is only available in iOS 13.0 or newer 이럴 때는 SwiftUI 프리뷰와 관련된 코드를 다른 파일로 분리시키면 의외로(?) 쉽게 해결될 수 있습니다ㅎㅎ 이번 글은 여기서 마무리.

TroubleShooting 2022.11.05

[Xcode 14] Signing for "xxxx" requires a development team. 에러

안녕하세요. 이번에는 Xcode 14에서 빌드할 때 발견한 이슈와 그 해결방법에 대해 공유드리려고 합니다. # 이슈 우선 저는 Cocoapods을 사용하고 있었구요. Podfile에 아래처럼 LineSDKSwift 모듈을 import 한 상태였습니다. platform :ios, '12.0' # source 'https://github.com/CocoaPods/Specs.git' target 'MySampleAppPod' do use_frameworks! pod 'LineSDKSwift', '~> 5.0' end Xcode 13에서는 문제 없었구요. 그런데 Xcode 14로 빌드하니 갑자기 이런 에러가 뜨더라구요. Signing for "LineSDKSwift-LineSDK" requires a devel..

TroubleShooting 2022.10.26

[RxSwift 6.1] withUnretained, subscribe(with:onNext:etc)

안녕하세요. 이번에는 RxSwift 6과 RxSwift 6.1에 새롭게 추가된 withUnretained operator와 subsubscribe(with:onNext:onError:onCompleted:onDisposed:) API에 대해 알아볼게요. # 1. withUnretained Swift 클로저는 내부에서 self에 접근해야 할 때 주의해야 합니다. 바로 retain cycle 때문인데요. (더 자세한 내용은 클로저에서 [weak self] 사용할 때 주의할 점3 글을 참고해주세요.) 그래서 클로저 안에서 self의 약한 참조를 갖기 위해 아래처럼 [weak self]를 사용합니다. (guard-let 구문 하고 세트로도 자주 사용하죠ㅎㅎ) 즉, RxSwift에서는 대부분 클로저를 사용하기 때..

Rx 2022.10.11

[Unity] Undefined symbol: _OBJC_CLASS_$_XXXXXXXX 해결방법

안녕하세요. Unity에서 EDM4U를 사용할 때, 아래처럼 Xcode에서 Undefined symbol 에러가 발생한 경험 없으신가요?? (물론, 진짜로 프레임워크를 추가하지 않았다거나 하는 symbol이 없는 상황인 경우는 논외로 하구요..ㅎㅎ) 진짜 아무리 봐도 원인을 모르겠는 경우, 제가 알려드린 방법을 한번 해보시는 것을 추천드립니다. 이제부터 말씀드리는 해결 방법은 아래 상황에서만 유효한 것이니 참고해주세요!! Unity 2019.3 이상 사용 EDM4U 사용 # 해결방법 ## Xcode 14 기준 'Unity-iPhone > Build Phases > Line Binary With Libraries'에 UnityFramework.framework가 빠졌는지 확인해보세요. UnityFramew..

TroubleShooting 2022.10.07

[ReactorKit] @Pulse

안녕하세요. 요즘 업무가 많아서.. 글 쓰는 게 좀 뜸했네요...ㅠㅠ 늦었지만, 이번에는 ReactorKit의 @Pulse 라는 property wrapper에 대해 알아볼게요. (이전 [ReactorKit] ReactorKit 입문 글에서 사용했던 Counter 예제를 이어서 사용할 겁니다.) # @Pluse 란? Pulse has diff only when mutated To explain in code, the results are as follows. Use when you want to receive an event only if the new value is assigned, even if it is the same value. like alertMessage. 'Pulse는 수정될 때(mut..

Rx 2022.09.30

[ReactorKit] ReactorKit 입문

안녕하세요. ReactorKit에 대해 처음 접하고 공부한 것들을 정리해보려고 해요. # 0. ReactorKit을 알게 된 배경 MVVM과 Rx를 어떻게 하면 구조적으로 아름답게 구현할까 고민하던 중, Input-Output 구조라는 게 있다는 것을 알게 되었어요. [참고 목록] https://linux-studying.tistory.com/28 https://mildwhale.github.io/2020-04-16-mvvm-with-input-output/ https://coding-idiot.tistory.com/7 https://ios-development.tistory.com/173 Input-Output 구조라는 용어가 공식적으로 개발자들 사이에서 널리 사용되는 것은 아닌 것 같지만.. 간략하게..

Rx 2022.09.11

Optional에서의 map, flatMap

안녕하세요. Collection에서 flatMap은 많이 사용해봤는데... Optional에서도 map, flatMap을 사용할 수 있더라구요...? (저는 최근에 알았...) 그래서 이번에 Optional에서의 map, flatMap에 대해 알아볼게요. ## map Optional에서의 map 함수는 Array나 Dictionary에서 사용하는 map 함수랑 약간 달라요. 공식 문서를 보면, 즉, 값이 nil일 경우 nil이 리턴되고, nil이 아닐 경우 클로저로 언래핑된 값을 전달해줘요. (map을 직접 써보면 파라미터에 언래핑된 값이 전달되는 것을 알 수 있습니다.) 그럼 map을 언제 사용하냐?? Use the map method with a closure that returns a non-opt..

Swift 2022.09.04

@inlinable, @usableFromInline

안녕하세요. 이번에는 inlinable, usableFromInline 속성(attribute)에 대해 알아볼게요. # 1. inlinable inlinable에 대한 설명에 앞서, Client Framework 간 동작 방식에 대해서 설명할게요. 이해를 돕기 위해 MyFramework라는 framework 안에 Person이란 클래스를 만들어봤어요. 사용하는 곳(Client)에서는 아래처럼 쓰겠죠? 내부적으로는 런타임 때 아래처럼 동작해요. 1. (Client) MyFramework에서 Person이 가지고 있는 method 들 중에서 어떤 게 sayHello() method야? 2. (MyFramework) Person의 2번째 method 임. 호출해줄게. 3. (Client) ㅇㅋ. ㄱㅅ...

Swift 2022.08.15

NSString, String 비교 방법 (Objective-C, Swift)

안녕하세요. 이번에는 Objective-C와 Swift에서 String 비교하는 방법에 대해 알아볼게요. # NSString 비교 (for Objective-C) NSString 비교 방법은 크게 2가지가 있습니다. == [NSString isEqualToString:] 결론부터 말씀드리자면 문자열 자체를 비교할 때는 [NSString isEqualToString:] method를 사용해야 합니다. 이렇게요. NSString *str1 = @"aaa"; NSString *str2 = @"aaa"; NSString *str3 = @"bbb"; NSLog(@"str1 and str2 are %@.", [str1 isEqualToString:str2] ? @"equal" : @"not equal"); NSLo..

iOS 2022.08.14