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๊ฐ์ ๊ฐ์ ์ด๋ฅผ ํตํด ๋ด ๋ง์์ ๋ค์ฌ๋ค๋ณด์์. - ๊ฐ์ ์ด๋ก ๊ธฐ๋กํ๋ ํ๋ฃจ ์ค๋์ ๊ฐ์ ์ผ๋ก ํ๋ฃจ๋ฅผ ๊ธฐ๋กํด์. - ์บ๋ฆฐ๋๋ก ๋ชจ์๋ณด๋ apps.apple.com ์ดํ '๋ง์๋ณด๊ธฐ' ์ ๋๋ค ์ผ๊ธฐ๋ฅผ ์ฐ๋ฉด์ ์ค๋ ํ๋ฃจ ๋ด ๋ง์์ ๋ค์ฌ๋ค ๋ณด์ธ์ ๐ '๋ง์๋ณด๊ธฐ' ์ดํ ๊ธฐ๋ฅ์ ๋๋ค. - ์ค๋ ๊ฐ์ ์ ์ด๋ฆ ๋ถ์ด๊ธฐ 116๊ฐ์ ๊ฐ์ ์ด๋ฅผ ํตํด ๋ด ๋ง์์ ๋ค์ฌ๋ค ๋ณผ ์ ์์ต๋๋ค - ๊ฐ์ ์ด๋ก ๊ธฐ๋กํ๋ ํ๋ฃจ ์ค๋์ ๊ฐ์ ์ผ๋ก ํ๋ฃจ๋ฅผ ๊ธฐ๋กํ ์ ์์ต๋๋ค - ์บ๋ฆฐ๋๋ก ๋ชจ์๋ณด๋ ๋ง์ (์บ๋ฆฐ๋) ๋งค๋ฌ ๋ด ๋ง์์ ์ด๋ ๋์ง ์บ๋ฆฐ๋๋ก ๋ชจ์ ๋ณผ ์ ์์ต๋๋ค - ์ง๋ ๋ง์ ์ดํด๋ณด๊ธฐ (ํต๊ณ) ๊ฐ์ ๊ทธ๋ํ๋ฅผ ํตํด ์ง๋ ๋ง์์ ์ ๋ฆฌํ ์ ์์ต๋๋ค
๋จผ์ ํ๊ฐ ์ค์ ์ ๋๋ค. // ํ๊ฐ 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..
UI๋ฅผ code๋ก ๊ตฌํํ๋ค๋ณด๋ฉด ์ง์ ๋ถํด์ง ์๊ฐ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฒ์ ๋ค์ ์์์๋๋ฐ ์ฌํํธ + ์ต์ + ์ปค๋งจ๋ + ๋ฐฉํฅํค(์ข,์ฐ) ๋ก ํ๋ฒ์ ๋ค ํผ์น๊ฑฐ๋ ๋ค ์ ์ ์ ์์ต๋๋ค ํ๋๋ง ์ ๊ณ ์ถ์ผ๋ฉด ์ฌํํธ๋ฅผ ๋นผ๋ณด์ธ์ ๊ทธ ์ธ ํ๋ฒ์ ์ฌ๋ฌ์ค ์์ ์ ๋ ฅํ๊ธฐ ์ปจํธ๋กค + ์ฌํํธ + ๋ฐฉํฅํค(์๋, ์) ํด๋น ๋ณ์ ์ด๋ฆ ๋ณ๊ฒฝ ์ปจํธ๋กค + ์ปค๋งจ๋ + e ์๋ ์ฝ์์ฐฝ ํผ์น๊ธฐ ์ปค๋งจ๋ + ์ฌํํธ + Y ์ฐ์ธก ํ๋ก์ ํธ ํ์์์ญ ์ปค๋งจ๋ + 0 ์ข์ธก ์์ฑ ์์ญ ์ปค๋งจ๋ + ์ต์ + 0 ์ถ๊ฐ์ ์ผ๋ก ์์ฃผ ์ฌ์ฉํ๋ ์ฝ๋ ๋จ์ถํค๋ก ์ ๋ ฅํ๋ ๋ฐฉ๋ฒ์ ๋๋ค https://ggasoon2.tistory.com/7 ์ด๋ฐ์์ผ๋ก code snippet์ผ๋ก ๋ฑ๋กํด๋๋ฉด uitf๋ง ์ณ๋ ์ ์ฝ๋๊ฐ ๋์จ๋ต๋๋ค ์ ๋ 30๊ฐ ์กฐ๊ธ ๋๊ฒ ๋ฑ๋กํด๋๋ค์ ์ด๋ฐ์์ผ๋ก ์์ฃผ ์ฐ..
- Total
- Today
- Yesterday
- swift network ๊ณตํตํ
- rag ๊ธฐ๋ฐ llm
- google timer ์ดํ
- swift get excel
- filemanager excel read
- swift excel read
- llm pdf rag
- swift queryitem encode
- google timer application
- llm csv
- rag ๊ธฐ๋ฐ llm ์ฑ๋ด
- swift network module
- focus timer ์ดํ
- rag llm pdf
- swift filemanager get excel
- swift urlsession refactoring
- swift network refactoring
- swift urlsession ๊ณตํตํ
- ํ์ด๋จธ ์ดํ
- swift urlsession network module
- ๊ตฌ๊ธ ํ์ด๋จธ ์ดํ
- swift filemanager excel
- chatgpt rag llm
- swift ์๊ฐ
- swift urlcomponent encode
- swift ์์ ๊ฐ์ ธ์ค๊ธฐ
- swift urlsession module
- deep timer
- swift ๋คํธ์ํฌ ๋ชจ๋ํ
- swift ์์ ์ฝ๊ธฐ
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |