一个 iOS 应用程序,允许烹饪爱好者浏览从远程 API 获取的甜点食谱

替代文字 替代文字

无标题.mp4

取餐

甜品食谱IOS应用

描述

这是一个 iOS 应用程序,允许烹饪爱好者浏览从远程 API 获取的甜点食谱。食谱按字母顺序排序,用户可以使用搜索窗口搜索特定的食谱。单击食谱会在新窗口中显示详细说明,包括配料。用户可以将食谱标记为收藏夹,这些收藏夹保存在用户默认设置中并在应用重启后保留

入门

  1. 确保您的计算机上安装了 Xcode 版本 14.0 或更高版本。
  2. 从存储库下载 FetchMeal 项目文件。
  3. 在 Xcode 中打开项目文件。
  4. 单击 Xcode 中的 Run Buttong 您应该会看到一个标题为 Desserts 的屏幕。

用法

要找到您喜欢的菜谱,您可以滚动菜谱列表或直接在搜索栏中输入菜谱名称。找到您想了解更多的食谱后,单击它,您将被重定向到详细信息视图,您可以在其中看到详细的描述、成分和措施。

如果您想保存食谱供以后使用,请滚动到详细说明的底部,然后点击“添加到收藏夹”。主菜单中的食谱旁边会出现一个红色的小心,表示它已被添加为书签。您可以使用相同的方法删除书签。即使您退出并重新启动应用程序,您选择的书签仍将保存。

建筑学

  • 设计模式该应用程序是使用 MVVM 架构模式设计的,它为项目提供了许多好处。通过利用这种模式,应用程序受益于低耦合和高内聚,以及明确的关注点分离。这反过来又使代码库更易于测试、维护和随时间扩展。
  • Async/await API 服务使用 async/await 机制进行 API 调用,这保证了我们只退出异步函数一次,并降低了在基于闭包的异步代码中发现常见错误的风险。通过使用 async 和 throw,我们将风险转移到编译时,从而减少了不易出错的代码。这种方法提供了改进的可读性和局部性、编译时检查和更好的可测试性。
  • 泛型 API 服务已作为通用函数实现,可用于通过 ID 检索所有餐食或餐食的详细信息。通过这种方式实现 API 服务,提高了代码的简洁性,提高了可重用性。这是因为可以在应用程序的多个部分使用相同的函数来获取数据,而不必为每个端点编写单独的函数。
  • 协议 API 服务旨在实现一个协议,以便将来与其他组件轻松集成。通过使用协议,可以在测试期间轻松模拟或替换 API 服务。这使得代码更灵活,更易于维护,并且在将来更容易修改。此外,协议设计促进了对单一职责原则的遵守,因为 API 服务仅负责实现协议方法,而不负责处理任何实现细节。

测试

该应用程序目前包括测试以确保 API 的基本功能。在未来的版本中,将使用模拟对象实施额外的测试,以进一步提高测试覆盖率并确保应用程序的可靠性。

工作流程

  • 报告错误:如果您在使用 HelloWorld 时遇到任何问题,请通过在 GitHub 存储库上创建新问题来报告它们。

  • 报告错误表格:

App version: 1.0
iOS version: 16.1
  • 提交拉取请求:如果您有错误修复或要添加的新功能,请提交拉取请求。在提交拉取请求之前,请确保您的更改经过良好测试并且您的代码符合 Swift 风格指南。

  • 改进文档:如果您发现文档中有任何错误或需要改进的地方,请随时提交包含您的更改的拉取请求。

  • 提供反馈:如果您对 HelloWorld 项目有任何反馈或建议,请通过创建新问题或向项目维护者发送电子邮件让我们知道。

应用程序接口

GitHub

查看 Github