[iOS 개인 프로젝트]뉴스앱

뜨또·2024년 5월 30일
0

iOS 개인 프로젝트

목록 보기
1/1
post-thumbnail

1. 개요

1-1) 아키텍처와 기술 스택

  • Deployment Target : iOS 15.0
  • Swift Version : Swift 5
  • Design Pattern : MVC
  • Cocoa Touch 
    - UIKit : UINavigation, UITapBar, UITableView의 주요 기능을 사용하여 화면 구성
    - CoreData : 기사 저장 기능 구현
  • Libary(Cocoapods)
    - Toast_Swift : 토스트 및 화면 로딩 효과 구현
  • API : News API(https://newsapi.org/)

1-2) 기능

[1] 기사 목록

NewsAPI를 통해 받아온 기사 데이터를 사용하여 테이블뷰 형식으로 보여준다.


[2] 기사 검색

SearchBar에 사용자가 입력한 키워드로 기사를 검색하고, 검색된 결과를 보여준다.


[3] 기사 보기

보고자 하는 기사를 선택하여 해당 기사 사이트로 이동한다.


[4] 기사 저장

기사 목록 중 저장하고 싶은 기사를 왼쪽으로 스크롤하여 저장한다.


[5] 저장한 기사 삭제

탭 바의 두번째 메뉴를 탭하면 저장한 기사 목록이 뜨고,
기사 저장 방법과 동일하게 삭제하고자 하는 기사를 왼쪽으로 스크롤하여 저장된 기사 목록에서 삭제한다.


[6] 추가 기능 - 다크 모드 지원


2. 설계 및 구현

2-1) ViewController 구성

  • HomeViewController : NewsAPI를 통해 받아온 기사 데이터를 사용하여 테이블뷰 형식으로 보여주며, 테이블뷰의 항목을 왼쪽으로 슬라이드하여 해당 데이터를 CoreData에 저장하거나 보고자하는 기사를 선택하여 해당 기사를 보여주는 ViewController
  • SavedArticlesViewController : CoreData를 사용해 저장한 기사 데이터를 테이블뷰 형식으로 보여주며, 테이블뷰의 항목을 왼쪽으로 슬라이드하여 저장된 기사 목록에서 해당 항목의 기사를 삭제할 수 있는 ViewController

2-2) MVC Pattern 적용

[1] 기사 목록

  • ArticleData : API로부터 데이터를 받아올 수 있는 Codable을 채택한 Model
  • NetworkManager : API로부터 데이터를 받아 가공하여 HomeViewController로 전달해주는 역할
  • ArticleTableViewCell : 전달받은 가공데이터를 재사용가능한 UITableViewCell을 사용하여 HomeViewController의 tableView에 리스트 형태로 보여주는 역할
  • HomeViewController : HomeViewController에 진입할 때 마다 기사 목록 리로드

[2] 기사 검색

  • ArticleData : API로부터 데이터를 받아올 수 있는 Codable을 채택한 Model
  • NetworkManager : SearchBar에 사용자가 검색어를 입력하면, 해당 검색어를 포함한 API주소로부터 데이터를 받아 가공하여 HomeViewController로 전달해주는 역할
  • ArticleTableViewCell : 전달받은 가공데이터를 재사용가능한 UITableViewCell을 사용하여 HomeViewController의 tableView에 리스트 형태로 보여주는 역할
  • HomeViewController : NetworkManager를 통해 사용자가 입력한 검색어가 포함된 기사목록을 받으면, 업데이트된 기사 목록으로 tableView 리로드

[3] 기사 저장

  • ArticleData : API로부터 데이터를 받아올 수 있는 Codable을 채택한 Model
  • ArticleModel : ArticleData 타입으로 이루어진 기사 데이터를 CoreData에서 사용하기 용이하도록 생성된 model, ArticleModel은 CoreData를 통해서만 읽기, 생성, 삭제가 가능
  • CoredataManager : 사용자가 저장하고자 하는 기사 데이터를 ArticleModel 타입으로 CoreData에 저장

[4] 저장한 기사 삭제

  • ArticleModel : ArticleData 타입으로 이루어진 기사 데이터를 CoreData에서 사용하기 용이하도록 생성된 model, ArticleModel은 CoreData를 통해서만 읽기, 생성, 삭제가 가능
  • CoredataManager : 사용자가 삭제하고자 하는 기사 데이터를 CoreData 저장소에서 찾고 해당 데이터 삭제
  • SavedArticlesViewController : CoredataManager를 통해 사용자가 삭제하고자 하는 기사를 삭제하면, 업데이트된 CoreData 저장소의 기사 목록으로 tableView 리로드

3. 관련 학습 내용

3-1) MVC Pattern

3-2) CoreData

3-3) Cocoapods


4. 개발 시 참고한 사항

테이블뷰 항목 슬라이드 메뉴 https://gonslab.tistory.com/45
항목 선택 시 외부 브라우저 https://hongssup.tistory.com/383

profile
멋있는 개발자(가 되고 싶은) 이갈

0개의 댓글