用于搜索、排序和查看有关纽约市高中的详细信息的 iOS 应用程序

纽约学校挑战赛

用于搜索、排序和查看有关纽约市高中的详细信息的 iOS 应用程序。为带回家的任务而实施。

纽约学校挑战赛

Technologies

  • 🧵 async/await
  • 🔁 REST APIs
  • 🏛️ MVVM
  • ✅ XCTest
  • 📊 Swift Charts
  • 📐 SwiftUI
  • 🏎️ Swift

Highlights

  • I used the view modifier to enable a simple substring search of the school names, and a for sorting options.searchableMenu
  • I added a working row of views with special URL schemes which allow users to quickly view the school’s website, call the school, compose an email to the school’s email address, or view the school’s location in the Maps appLink
  • To illustrate school SAT scores, I used Swift Charts to create a custom horizontal bar chart with modifiers and custom .annotationAxisMarks
  • I used formatters such as to efficiently and elegantly display school statistics.number.notation(.compactName)
  • I used so that I could keep the names of my model struct properties Swifty, which is less work than assigning a raw value to every casejsonDecoder.keyDecodingStrategy = .convertFromSnakeCaseStringCodingKey
  • MVVM was my choice of architecture to separate models, views, and business logic
  • Using XCTest, I wrote unit tests targeting the most sensitive part of my code, the JSON decoding, which can easily break with any change to the model structs
  • I chose the newer methods of over the older closure-based methods in my networking serviceasync/awaitURLSession
  • I created a generic Statistic view and a custom style to easily display school statistics in an aesthetic formatLabeledContent

GitHub

点击跳转