{"id":18696104,"url":"https://github.com/jacobkosmart/fruitsdic-ios-practice","last_synced_at":"2026-04-27T08:32:13.106Z","repository":{"id":140609162,"uuid":"446655774","full_name":"jacobkosmart/FruitsDic-ios-practice","owner":"jacobkosmart","description":"To Practice onboarding , List, detail and setting View","archived":false,"fork":false,"pushed_at":"2022-01-12T06:49:26.000Z","size":11382,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-12-28T03:27:51.921Z","etag":null,"topics":["disclosure","foreach-loop","lifecycle","swiftui","webview"],"latest_commit_sha":null,"homepage":"","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jacobkosmart.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-01-11T02:49:13.000Z","updated_at":"2022-01-12T06:51:35.000Z","dependencies_parsed_at":null,"dependency_job_id":"f2e0f85c-03bb-4df7-a8cd-43cd8889a855","html_url":"https://github.com/jacobkosmart/FruitsDic-ios-practice","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jacobkosmart%2FFruitsDic-ios-practice","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jacobkosmart%2FFruitsDic-ios-practice/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jacobkosmart%2FFruitsDic-ios-practice/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jacobkosmart%2FFruitsDic-ios-practice/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jacobkosmart","download_url":"https://codeload.github.com/jacobkosmart/FruitsDic-ios-practice/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239558911,"owners_count":19658927,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["disclosure","foreach-loop","lifecycle","swiftui","webview"],"created_at":"2024-11-07T11:17:14.202Z","updated_at":"2025-11-08T14:30:32.782Z","avatar_url":"https://github.com/jacobkosmart.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🍓 FruitsDic-ios-practice\n\n\u003c!-- ! gif 스크린샷 --\u003e\n\n\u003cp\u003e\n  \u003cimg width=\"250\" alt=\"스크린샷\" src=\"https://user-images.githubusercontent.com/28912774/149056894-b3a89648-baa0-43bc-a4bf-4a82de382d2d.gif\"\u003e\n  \u003cimg width=\"250\" alt=\"스크린샷\" src=\"https://user-images.githubusercontent.com/28912774/149057143-1c8e85ef-7bb3-4f34-bc66-7dccfaa294ee.gif\"\u003e\n  \u003cimg width=\"250\" alt=\"스크린샷\" src=\"https://user-images.githubusercontent.com/28912774/149057368-9bd8ae95-f0fa-4901-9ead-36ba48982c73.gif\"\u003e\n\n\u003c/p\u003e\n\n## 📌 Main Features\n\n- OnBoding Screen with Page Tab View\n\n- Data model and fetch data\n\n- SwiftUI App life cycle works\n\n- Link View in SwiftUI\n\n- Disclosure View in SwiftUI\n\n- Display views dynamically in a list view with loop\n\n\u003c!-- ## 👉 Pod library --\u003e\n\n\u003c!-- ### 🔷  --\u003e\n\n\u003c!-- \u003e  --\u003e\n\n\u003c!-- #### 설치\n\n`pod init`\n\n```ruby\n\n```\n\n`pod install`\n --\u003e\n\n## 📌 Project Setup\n\n- Device Orientation : Portrait\n\n- assets import\n\n  - Appicon\n\n  - Fruits\n\n  - logo : It is svg file that need to selecting preserve vector data in image set. It can be scalable sized in vector file\n\n  - Colors : To show fruits background color individually\n\n  - Accent Colors : It is widely used for Buttons and other different UI elements in navigation\n\n![image](https://user-images.githubusercontent.com/28912774/148872186-36e5f78e-f3d9-42e5-bf3e-53d8d810fb65.png)\n\n## 🔑 Check Point !\n\n### 🔷 UI Structure\n\n\u003c!-- ! ppt UI structure --\u003e\n\n![슬라이드1](https://user-images.githubusercontent.com/28912774/149076078-289643ef-0697-426f-ac3f-ced40ddfea3e.jpeg)\n![슬라이드2](https://user-images.githubusercontent.com/28912774/149076088-0ba9be1d-4769-46f6-b9c9-22e8723bddee.jpeg)\n![슬라이드3](https://user-images.githubusercontent.com/28912774/149076094-7a85a25d-49d0-4f82-8445-960768859416.jpeg)\n\n### 🔷 Model\n\n```swift\n// FruitsModel.swift\nimport SwiftUI\n\n// MARK: -  Fruit Model\nstruct Fruit: Identifiable {\n\tvar id = UUID()\n\tvar title: String\n\tvar headline: String\n\tvar image: String\n\tvar gradientColors: [Color]\n\tvar description: String\n\tvar nutrition: [String]\n}\n```\n\n### 🔷 Check core codes in details\n\n#### 👉 [1.Onboarding screen using the new page TabView](https://github.com/jacobkosmart/FruitsDic-ios-practice/blob/main/MD/1.CreateOnboardingScreen.md)\n\n#### 👉 [2.Create data model and fetch data](https://github.com/jacobkosmart/FruitsDic-ios-practice/blob/main/MD/2.DataModel_FetchData.md)\n\n#### 👉 [3.SwiftUI LifeCycle](https://github.com/jacobkosmart/FruitsDic-ios-practice/blob/main/MD/3.SwiftUI_LifeCycle.md)\n\n#### 👉 [4.ListView and Retrieve data using ForEach loop](https://github.com/jacobkosmart/FruitsDic-ios-practice/blob/main/MD/4.ListView_RetrieveData.md)\n\n#### 👉 [5.DetailView](https://github.com/jacobkosmart/FruitsDic-ios-practice/blob/main/MD/5.DetailView_layout.md)\n\n#### 👉 [6.SettingView](https://github.com/jacobkosmart/FruitsDic-ios-practice/blob/main/MD/6.SettingView.md)\n\n#### 👉 [7.iPad Layout](https://github.com/jacobkosmart/FruitsDic-ios-practice/blob/main/MD/7.iPadLayout.md)\n\n\u003c!-- #### 👉 --\u003e\n\n\u003c!-- \u003e Describing check point in details in Jacob's DevLog - https://jacobko.info/firebaseios/ios-firebase-03/ --\u003e\n\n\u003c!-- ## ❌ Error Check Point\n\n### 🔶 --\u003e\n\n\u003c!-- xcode Mark template --\u003e\n\n\u003c!--\n// MARK: IBOutlet\n// MARK: LifeCycle\n// MARK: Actions\n// MARK: Methods\n// MARK: Extensions\n--\u003e\n\n\u003c!-- \u003cimg width=\"300\" alt=\"스크린샷\" src=\"\"\u003e --\u003e\n\n\u003c!-- README 한 줄에 여러 screenshoot 놓기 예제 --\u003e\n\u003c!-- \u003cp\u003e\n    \u003cimg alt=\"Clear Spaces demo\" src=\"../assets/demo-clear-spaces.gif\" height=400px\u003e\n    \u003cimg alt=\"QR code scanner demo\" src=\"../assets/demo-qr-code.gif\" height=400px\u003e\n    \u003cimg alt=\"Example preview demo\" src=\"../assets/demo-example.gif\" height=400px\u003e\n\u003c/p\u003e --\u003e\n\n---\n\n\u003c!-- 🔶 🔷 📌 🔑 👉 --\u003e\n\n## 🗃 Reference\n\nThe Simple Life(cycle) of a SwiftUI View- [https://dbolella.medium.com/the-simple-life-cycle-of-a-swiftui-view-95e2e14848a2](https://dbolella.medium.com/the-simple-life-cycle-of-a-swiftui-view-95e2e14848a2)\n\nDeveloper apple docs in DisclosureGroup - [https://developer.apple.com/documentation/swiftui/disclosuregroup](https://developer.apple.com/documentation/swiftui/disclosuregroup)\n\n서근 개발노트 swiftUI - [https://seons-dev.tistory.com/50](https://seons-dev.tistory.com/50)\n\nUdemy SwiftUI Masterclass 2022 - [https://www.udemy.com/course/swiftui-masterclass-course-ios-development-with-swift/](https://www.udemy.com/course/swiftui-masterclass-course-ios-development-with-swift/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjacobkosmart%2Ffruitsdic-ios-practice","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjacobkosmart%2Ffruitsdic-ios-practice","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjacobkosmart%2Ffruitsdic-ios-practice/lists"}