使用 CoreData 和 SwiftUI 构建的 Minimal News 应用程序

纽约时报

NY Times 是一个 Minimal News 🗞 iOS 应用程序,旨在描述SwiftSoupCoreDataSwiftUI的使用

⛓ 特点

文章加载中 按类别浏览
使用 3D Touch 将文章添加为书签。 只需轻轻一扫即可删除书签

📝 目录

⚙️ 要求

iOS 14+
Xcode 12.2 and Up

📚 你能学到什么?

  • 您可以学习类似的技术
    • 斯威夫特用户界面
    • 核心数据
    • 结合
    • 网页抓取
  • 您可以从该项目中学习各种设计模式,例如
    • 依赖注入
    • 存储库
    • 辛格尔顿
    • 观察员
  • 您可以通过组合框架学习 MVVM SwiftUI 的双向绑定架构

🛠 技术背景

  • NYTimes 应用程序是使用 SwiftUI 作为核心界面以及使用组合框架的双向绑定 MVVM 架构制作的。
  • CoreData用于将文章书签离线存储在设备中,以便用户稍后访问。
  • SwiftSoup 用于从《纽约时报》网站上删除所需的详细信息。
  • 该应用程序的用户界面主要使用内置的 iOS 组件,以保持用户体验接近原生的感觉。
  • 添加书签就像在主屏幕上进行 3d 触摸或点击详细文章屏幕中的书签图标一样简单。
  • 该项目是基于模块化和良好编码模式的理念构建的。多种设计模式,如依赖注入、存储库模式、单例模式等。

🔗 依赖关系

该项目使用SPM(Swift Package Manager)作为依赖管理器。

⛓ 项目结构

NYTimes                 # Root Group
.
├── Utilities           # Utilities for Fetching data ans Scraping HTML
├── Extensions          # Some useful extensions
├── Globals             # Contains App constants
├── Persistence         # Coredata files. Contains coredata model and Singleton for ManagedObjectContext
├── Views               # SwiftUI Views
├── Repository          # Repository for Coredata
├── ViewModel           # Viewmodels for SwiftUI Views
├── Model               # Model files
|   └── Coredata Model  # Coredata model subclasses
|
└── Supporting files    # Misc. files like Appdelegate, SceneDelegate.

建筑学

这个应用程序使用MVVM架构。

MVVM

✏️贡献

如果您想为这个库做出贡献,我们随时欢迎您!

你可以做什么

您可以通过提交问题、错误和 PR 来为我们做出贡献。

在你做之前

在提出问题或报告错误之前,请检查问题或错误是否与 Xcode 或 SwiftUI 有关。

贡献指南:

  • 有关拟议变更的未决问题。
  • 回购所有者将在那里与您联系。
  • 如果您提议的更改获得批准,请分叉此存储库并进行更改。
  • 针对最新分支打开 PR dev在 PR 中添加漂亮的描述。
  • 你完成了!

GitHub

查看 Github