Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- swift documentation
- rxswift
- tableView
- Xcode
- clean architecture
- UICollectionView
- 리펙터링
- swiftUI
- HIG
- RxCocoa
- Human interface guide
- MVVM
- uitableview
- uiscrollview
- 리팩토링
- Observable
- UITextView
- 클린 코드
- 스위프트
- Clean Code
- 애니메이션
- ios
- Protocol
- combine
- 리펙토링
- collectionview
- SWIFT
- ribs
- Refactoring
- map
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - swift] GitHub 깃 허브 contribute 방법 (컨트리뷰트, cocoapods 수정해서 사용하는 방법) 본문
Git, CocoaPods, Xcode, Shell
[iOS - swift] GitHub 깃 허브 contribute 방법 (컨트리뷰트, cocoapods 수정해서 사용하는 방법)
jake-kim 2022. 4. 17. 22:02예제로 사용할 오픈소스 - Then
- 초기화하는 동시에, 클로저를 통해서 해당 인스턴스의 프로퍼티에 접근하여 코드를 깔끔하게 구현할 수 있는 오픈소스
// then 사용하지 않은 일반 코드
private let label: UILabel = {
let label = UILabel()
label.text = "label"
label.translatesAutoresizingMaskIntoConstraints = false
return label
}()
// then 사용
private let label = UILabel().then {
$0.text = "label"
$0.translatesAutoresizingMaskIntoConstraints = false
}
- 오픈소스에 없는 코드를 오픈소스에 추가하여 사용하는 방법
ex) JsonDecoder에 then extension을 사용하여 아래 코드 중 decoder부분 수정
struct MyDate: Codable {
let todayDate: String?
}
class ViewController: UIViewController {
let json = """
{ "today_date": "2022-04-11T15:25:47.929Z" }
"""
override func viewDidLoad() {
super.viewDidLoad()
let decoder = JSONDecoder()
decoder.keyDecodingStrategy = .convertFromSnakeCase
do {
guard let data = json.data(using: .utf8) else { fatalError() }
let myDate = try decoder.decode(MyDate.self, from: data)
print(myDate)
} catch {
print(error)
}
}
}
- 아래처럼 수정해서 사용하는 방법
let decoder = JSONDecoder().then {
$0.keyDecodingStrategy = .convertFromSnakeCase
}
- extension으로 단순히 추가해도 되지만, 오픈소스에 추가해서 사용하는 방법은 아래에서 계속
extension JSONDecoder: Then {}
cocoapods 수정해서 사용하는 방법
- 오픈소스 github 레포를 fork뜨기
(fork를 뜨는 이유 - 다른 레포에 PR을 날릴려면 fork를해야 해당 레포에 PR을 날릴 수 있기 때문)- github 레포에 가서 Fork 버튼 클릭
- Create Fork 클릭
- 위에서 Repository name에 Then으로 적었으므로, 내 레포에 Then이라는 레포가 생성
- (source tree 사용)
- 해당 레포를 clone하여 브랜치를 새로 생성
- JSONDecoder와 추가로 JSONEncoder도 추가한 상태
- 자신의 레포에 push
- "Add extension for JSONDecoder and JSONEncoder"
- 해당 commit 확인 및 복사 (cocoapods에서 사용하기 위해 필요)
7631938978a6035be33c77f85c5d4707d27131a5 [7631938]
- podfile에 아래처럼 작성했던 부분을 수정
- pod 'Then'이라고 되어있던 부분을 수정
- pod 'Then', :git => 'fork한 깃헙 주소', commit: => '위에서 변경된 부분의 커밋'
수정 전)
target 'ExThen' do
use_frameworks!
pod 'Then'
end
수정 후)
target 'ExThen' do
use_frameworks!
pod 'Then', :git => 'git@github.com:JK0369/Then.git', :commit => '7631938'
end
- pod install하여 설치
- 이제 framework에 내장되어 있으므로 따로 extension하지 않아도 JSONDecoder에도 바로 사용 가능
let decoder = JSONDecoder().then {
$0.keyDecodingStrategy = .convertFromSnakeCase
}
contribute 방법
- 위에서 Push한 내용을 기존 오픈소스의 브랜치로 PR날리면 완료
* 참고
'Git, CocoaPods, Xcode, Shell' 카테고리의 다른 글
Comments