Skip to content

jwl-98/ios5-contacts

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

54 Commits
 
 
 
 
 
 

Repository files navigation

코어데이터를 이용한 연락처앱

Simulator Screenshot - iPhone 16 Pro - 2024-12-12 at 19 45 48 Simulator Screenshot - iPhone 16 Pro - 2024-12-12 at 19 45 58 Simulator Screenshot - iPhone 16 Pro - 2024-12-12 at 19 46 06 Simulator Screenshot - iPhone 16 Pro - 2024-12-12 at 19 46 15 Simulator Screenshot - iPhone 16 Pro - 2024-12-12 at 19 46 19
첫 화면 연락처 추가화면 랜덤버튼을 눌러 변경된 이미지 저장버튼을 눌렀을떄 뜨는 팝업 확인버튼을 누른후 나오는 화면

실행 영상

프로젝트 소개

  • 앱개발 숙련 주차에 발제된 과제입니다!
  • 코어 데이터와 네트워킹 코드를 활용한 연락처 앱입니다.
  • 네트워킹 코드를 이용해 Json 디코딩을 통해 포켓몬 캐릭터 이미지와 이름을 불러와 입맛대로 커스텀 해서 정보를 저장할수 있습니다!
  • 코어데이터에 이미지,이름,전화번호가 저장되어 비행기모드 혹은 인터넷이 되지 않는 디스토피아 세상에서도 상황과 시간에 제약받지 않고 기존에 저장된 데이터를 확인할수 있습니다.

개발기간

  • 2024.12.9 ~ 2024.12.12일 21시00분

1. 개발환경

  • Back-End: https://pokeapi.co Api 활용
  • 버전 및 이슈관라: Github
  • 디자인: 클론
  • 서비스배포 환경: X

2. 핵심 개발 전략

접근 방법: 네트워크 데이터 처리 코드 중 UIImage는 데이터 형식을 받을수 있음을 발견했습니다.
Data에 관한 공식문서 확인후 Base-64 Encoding라는 개념내 String타입으로 반환하는 메서드가 존재하는걸 발견후
데이터를 String으로도 저장할수 있겠구나에서 시작해 접근했습니다.

  • 코어데이터를 최대한 활용해보고자 Api 호출은 "랜덤 이미지 생성" 이라는 버튼을 눌렀을때만 호출이 되도록 구현했습니다.
  • 입력된 데이터 (이미지, 이름, 전화번호)는 코어데이터 내부에 저장이 되고 저장된 데이터 기반으로 메인뷰에 존재하는 셀을 구성합니다.
  • 코어데이터 속성은 전부 String형으로 구현했기 때문에 이미지를 Data타입으로 변환, base64EncodedString 형태로 코어테이터 내부에 저장시킵니다.
  • 셀을 구성할때는 base64EncodedString 타입을 Data로 변환 최종적으로 UIImage에 존재하는 data 생성자에 전달해서 실제 이미지로 변경시켜 코어데이터에 저장된 이미지가 표시됩니다.

3. 프로젝트 구조

├── Controller
│   ├── AppDelegate.swift
│   ├── FirstViewController.swift
│   ├── PhoneBookViewController.swift
│   ├── SceneDelegate.swift
│   └── ViewController.swift
├── Info.plist
├── Model
│   ├── APIModel
│   │   ├── JsonDecoder.swift
│   │   ├── KoreanNameJson.swift
│   │   ├── PokemonDataJson.swift
│   │   └── PokemonUrl.swift
│   └── DataModel
│       ├── PhoneBook+CoreDataClass.swift
│       ├── PhoneBook+CoreDataProperties.swift
│       ├── PhoneBookData.swift
│       ├── PhoneBookDataManager.swift
│       └── PhoneBookModel.xcdatamodeld
│           └── PhoneBookModel.xcdatamodel
│               └── contents
└── Views
    ├── Base.lproj
    │   └── LaunchScreen.storyboard
    ├── FistView.swift
    ├── PhoneBookView.swift
    └── TableViewCell.swift

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages