Clean Architecture ๊ธฐ๋ฐํ์ฌ๋คํธ์ํฌ๋ฅผ ์ถ์ํ, ๋ชจ๋ํํ๋ ์ฝ๋๋ฅผ ์ ๋ฆฌํ๋ ค๊ณ ํฉ๋๋ค Clean Architecture์์ ๋คํธ์ํฌ ๊ณ์ธต์ ๋ค์๊ณผ ๊ฐ์ ๋ ์ด์ด๋ก ๋๋ ์ ์์ต๋๋ค - Domain Layer: ์ฑ์ ํต์ฌ ๋น์ฆ๋์ค ๋ก์ง๊ณผ ๊ท์น์ ์ ์ํฉ๋๋ค- Data Layer: ์ธ๋ถ ๋ฐ์ดํฐ ์์ค(๋คํธ์ํฌ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฑ)์์ ์ํธ์์ฉ์ ์ฒ๋ฆฌํฉ๋๋ค- Presentation Layer: UI์ ์ํธ์์ฉํ๋ฉฐ, ์ฌ์ฉ์์๊ฒ ๋ฐ์ดํฐ๋ฅผ ๋ณด์ฌ์ค๋๋ค ์ด์ค์์ network ๋ก์ง์ Data Layer์ ํฌํจ๋ฉ๋๋ค. ๋จผ์ ๋คํธ์ํฌ ์ธ์ ์ ๋์ ๊ตฌํํ๋ URLSessionWrapper๋ฅผ ์์ฑํฉ๋๋ค.import Foundationpublic protocol SessionProtocol { func ..
1. Filemanager๋ก ํ์ผ ๊ฐ์ ธ์ค๋ ๋ฐฉ๋ฒ ์ ๋๋ค. ์ฐ์ ์ฑ ์ธ๋ถ ์ ์ฅ์ ํ์ผ์ ์ ๊ทผํ๊ธฐ ์ํดkey: Supports opening documents in placevalue: yes key: Supports Document Browservalue: yes Info plist์ ๋ฑ๋กํฉ๋๋ค ๋ค์ UIDocumentPickerDelegate๋ฅผ ์ฑํํ๊ณ ํ์ผ์ ์ ํ ์๋ฃํ์๋์ api๋ฅผ ํธ์ถํฉ๋๋ค class ViewController: UIViewController { let documnetPicker: UIDocumentPickerViewController = UIDocumentPickerViewController(forOpeningContentTypes: [.spreadsheet], asCop..

API ํธ์ถ ๋ชจ๋ํ๋ฅผ ํตํด ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ์ ๋์ด๊ณ ์ ์ง๋ณด์๋ฅผ ์ฉ์ดํ๊ฒ ํ ์ ์์ต๋๋ค. ๊ธฐ์กด์๋ ์ด๋ฐ์์ผ๋ก API๋ฅผ ์์ฑํ์ฌ ํธ์ถํด์ฃผ์์ต๋๋ค //// RequsetAPI.swift// ๋ถ์ฐ ์ฌํ ๋ณต์ง ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ์ดํ// https://apps.apple.com/kr/app/id1588773594// Created by jh on 2021/09/17.//import Foundationimport Alamofirestruct fetchAPI { private init() { } static let shared = fetchAPI() func getData(numOfRows: Int, PageNo: Int, completion: @escaping (_ data: [Item])..

์ง์ค ํ์ด๋จธ ์ง๊ด์ ์ธ ํ์ด๋จธ๋ก ์ง์ค๋ ฅ์ ๋์ฌ๋ณด์ธ์.๋ฌ๋ ฅ์ ๊ธฐ๋กํ๊ณ , ์ผ๋ง๋ ์ง์คํ๋์ง ๋๋์๋ณด์ธ์. https://apps.apple.com/kr/app/id6605927206 ์ง์ค ํ์ด๋จธ์ง์ค ํ์ด๋จธ๋ ์ง์ค๋ ฅ์ ๋์ด๊ณ ์๊ฐ ๊ด๋ฆฌ๋ฅผ ์ต์ ํํ๋ ๋ฐ ๋์์ ์ฃผ๋ ํ์ ์ ์ธ ํ์ด๋จธ ์ดํ์ ๋๋ค. ๋ ์ฐฝ์ ์ธ ์ํ ํ์ด๋จธ ๋์์ธ์ ํตํด ์ฝ๊ณ ์ง๊ด์ ์ผ๋ก ์๊ฐ์ ์ค์ ํ๊ณ , ์ง์คํ ์ ์apps.apple.com 1. ์ง๊ด์ ์ธ UI๋ก ์ง์ค๋ ฅ์ ๋์ฌ๋ณด์ธ์ 2. ์ง์คํ ์๊ฐ๋ค์ ํ๋์ ์ดํด๋ณด์ธ์ 3. ํ์์ ๋ง๊ฒ ์ปค์คํฐ๋ง์ด์ฆ ํด๋ณด์ธ์ ์ง์ค ํ์ด๋จธ๋ ์ง์ค๋ ฅ์ ๋์ด๊ณ ์๊ฐ ๊ด๋ฆฌ๋ฅผ ์ต์ ํํ๋ ๋ฐ ๋์์ ์ฃผ๋ ํ์ ์ ์ธ ํ์ด๋จธ ์ดํ์ ๋๋ค. ๋ ์ฐฝ์ ์ธ ์ํ ํ์ด๋จธ ๋์์ธ์ ํตํด ์ฝ๊ณ ์ง๊ด์ ์ผ๋ก ์๊ฐ์ ์ค์ ํ๊ณ ..
์ํฉ์ ์ด๋ ์ต๋๋ค 1. TableView์ data๊ฐ ์ง์์ ์ผ๋ก ๋ณํ๊ณ ์์ต๋๋ค.2. TableView์ ํน์ index๋ง update ํด์ฃผ๋ ค๊ณ ํฉ๋๋ค. (์ค์ ๋ก๋ ๋น๋๊ธฐ ์์ ์ updateํด์ฃผ๋ ์ํฉ) ์ ๊ฐ ๊ฒช์ ๋ฌธ์ ๋ @objc func buttonPressed() { // ๋ฒํผ ๋๋ ์๋ data ๋ณ๊ฒฝ ์ด์ ๋๋ ์ดํ ํ ์ด๋ธ๋ทฐ ์ ๋ฐ์ดํธ ๋๋๋ก DispatchQueue.main.async { self.tableView.reloadRows(at: [IndexPath(row: 3, section: 0)], with: .automatic) } self.dataArray = ["1","2","3","4","5","6"] } s..
TableView์์ ์ ํ๋ cell์ ์ต์์ layer๋ก ๊ฐ์ ธ์ค๋ ๋ฐฉ๋ฒ์ ๋๋ค. ์ฐ์ cell์ ์ ์ํ ๋, selectedIndex(์ ์ญ๋ณ์)๋ก cell์ ๊ตฌ๋ถํด์คฌ์ต๋๋ค. func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { if indexPath.row == selectedIndex { let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) cell.layer.zPosition = 1 return cell } el..
UIPageViewController๋ฅผ ๊ตฌํํ๋ ์ค view.addSubview(navigationView)addChild(pageViewController)view.addSubview(pageViewController.view) ๊ฐ ์ปดํฌ๋ํธ1. navigationView(UIView type)2. pageViewController(UIViewController type) ๋ฅผ ํ๋ฉด์ ์ถ๊ฐํ๋ ๋ถ๋ถ์ ์์ด์์ฐจ์ด์ ์ด ์๋ค๋๊ฒ์ ์๊ฒ๋์์ต๋๋ค. addSubview(_:)๋ UIView์ subview๋ฅผ ์ถ๊ฐํ๋ ๋ฉ์๋์ ๋๋ค.UIView ํํ๋ฅผ ์ถ๊ฐํ ๋ ์ฌ์ฉํ๊ตฌ์. 1. sub ๋ทฐ๋ parent ๋ทฐ์ ์ขํ๊ณ๋ฅผ ๋ฐ๋ฅด๋ฉฐ2. parent ๋ทฐ๊ฐ ์ด๋ํ๊ฑฐ๋ ํฌ๊ธฐ๊ฐ ๋ณ๊ฒฝ๋๋ฉด sub ๋ทฐ ๋ํ ๋ณ๊ฒฝ๋๋ค ๋ ํน์ง์ ๊ฐ์ง๊ณ ..

์ดํ์ ์คํํ ๋ ํน์ ๋ฒ์ ๋ณด๋ค ๋ฎ์ ๊ฒฝ์ฐ์ ๋ฐ์ดํธ๋ฅผ ๊ฐ์ ๋ก ์๊ตฌํ๋ฉฐ ์ฑ์คํ ์ด๋ก ํ์ด์ง๋ฅผ ๋์ฐ๋๋ก ํ๋ ์์ ๊ตฌํ์ค ์๊ธด ๋ฌธ์ ์ ๋๋ค. ์ฒ์์ ๋ฒ์ ์ String ๋ฌธ์์ด์ ๋น๊ต ์ฐ์ฐ์๋ฅผ ํตํด ์์ ์ ํตํด ์ดํ ์ต์ ๋ฒ์ ๋ณด๋ค ๋์์ง ํ๋จํ์์ต๋๋ค. ๋ง์ฝ ํ์ฌ ์ดํ ๋ฒ์ ์ด 1.0.9์ดํ ์ต์ ๋ฒ์ 1.0.6 ์ผ ๊ฒฝ์ฐ "1.0.9" > "1.0.6" // true์ด๋ฌ๋ฉด ํ์ฌ ๋ฒ์ ์ด ์ดํ ์ต์๋ฒ์ ๋ณด๋ค ๋๋ค๊ณ ํ๋จ๋์ด ์ ๋ฐ์ดํธ ํ์ง ์์๋ ๋ฉ๋๋ค. ํ์ง๋ง ๋ง์ฝ ํ์ฌ ์ดํ ๋ฒ์ ์ด "1.0.10" ์ผ ๊ฒฝ์ฐ"1.0.10" > "1.0.6" // false ์ด๋ฐ์์ผ๋ก false ๊ฐ ๋๋ฏ๋ก ์ฑ์คํ ์ด๋ก ์ฐ๊ฒฐํ๊ฒ ๋ฉ๋๋ค. ์ด๋ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ฃผ๊ธฐ ์ํด์'Compare' ๋ผ๋ String ๋ด๋ถ์ method๋ฅผ ์ฌ์ฉํ ์ ..

์ดํ '๋ง์๋ณด๊ธฐ' ์ ๋๋ค ์ผ๊ธฐ๋ฅผ ์ฐ๋ฉด์ ์ค๋ ํ๋ฃจ ๋ด ๋ง์์ ๋ค์ฌ๋ค ๋ณด์ธ์ ๐ - ์ค๋ ๊ฐ์ ์ ์ด๋ฆ ๋ถ์ด๊ธฐ116๊ฐ์ ๊ฐ์ ์ด๋ฅผ ํตํด ๋ด ๋ง์์ ๋ค์ฌ๋ค ๋ณผ ์ ์์ต๋๋ค- ๊ฐ์ ์ด๋ก ๊ธฐ๋กํ๋ ํ๋ฃจ์ค๋์ ๊ฐ์ ์ผ๋ก ํ๋ฃจ๋ฅผ ๊ธฐ๋กํ ์ ์์ต๋๋ค- ์บ๋ฆฐ๋๋ก ๋ชจ์๋ณด๋ ๋ง์ (์บ๋ฆฐ๋)๋งค๋ฌ ๋ด ๋ง์์ ์ด๋ ๋์ง ์บ๋ฆฐ๋๋ก ๋ชจ์ ๋ณผ ์ ์์ต๋๋ค- ์ง๋ ๋ง์ ์ดํด๋ณด๊ธฐ (ํต๊ณ)๊ฐ์ ๊ทธ๋ํ๋ฅผ ํตํด ์ง๋ ๋ง์์ ์ ๋ฆฌํ ์ ์์ต๋๋ค ์ฑ์คํ ์ด ๋ฐ๋ก๊ฐ๊ธฐ ๋ง์๋ณด๊ธฐ๋ง์๋ณด๊ธฐ์ ๊ธฐ๋ฅ์ ์๊ฐํ ๊ฒ์. - ์ค๋ ๊ฐ์ ์ ์ด๋ฆ ๋ถ์ด๊ธฐ 116๊ฐ์ ๊ฐ์ ์ด๋ฅผ ํตํด ๋ด ๋ง์์ ๋ค์ฌ๋ค๋ณด์์. - ๊ฐ์ ์ด๋ก ๊ธฐ๋กํ๋ ํ๋ฃจ ์ค๋์ ๊ฐ์ ์ผ๋ก ํ๋ฃจ๋ฅผ ๊ธฐ๋กํด์. - ์บ๋ฆฐ๋๋ก ๋ชจ์๋ณด๋apps.apple.com
๋จผ์ ํ๊ฐ ์ค์ ์ ๋๋ค. // ํ๊ฐ extension UILabel { func setLineSpacing(ratio: Double) { let style = NSMutableParagraphStyle() let lineheight = self.font.pointSize * ratio //font size * multiple style.minimumLineHeight = lineheight style.maximumLineHeight = lineheight self.attributedText = NSAttributedString( string: self.text ?? "", attributes: [ .paragraphStyle: style ]) } } extension UILabel { func setLin..
- Total
- Today
- Yesterday
- rag llm pdf
- swift ๋คํธ์ํฌ ๋ชจ๋ํ
- swift network refactoring
- swift ์๊ฐ
- llm pdf rag
- focus timer ์ดํ
- swift network ๊ณตํตํ
- swift filemanager excel
- swift urlsession network module
- ๋ ๋์ธ์ด
- swift filemanager get excel
- swift urlsession refactoring
- swift urlsession module
- swift urlcomponent encode
- swift ์์ ๊ฐ์ ธ์ค๊ธฐ
- chatgpt rag llm
- llm csv
- swift ์์ ์ฝ๊ธฐ
- swift get excel
- ๋ ๋์ธ์ด ์ดํ
- swift queryitem encode
- filemanager excel read
- swift excel read
- swift network module
- ๊ณต๋ถ ํ์ด๋จธ ์ดํ
- rag ๊ธฐ๋ฐ llm ์ฑ๋ด
- ์๋์ํํธ ๋ ์ด์ธ์ด
- readysay
- swift urlsession ๊ณตํตํ
- rag ๊ธฐ๋ฐ llm
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |