2편 : https://ddaengddaeng.tistory.com/81
[Swift] 스위프트 실전 프로젝트 1. 도서 관리 프로그램 만들기(1)
출처 앱 12개를 만들며 배우는 Swift4 & iOS11 아이폰 iOS 개발 강좌 https://www.inflearn.com/course/swift4-%EC%8A%A4%EC%9C%84%ED%94%84%ED%8A%B8-ios-%EA%B0%9C%EB%B0%9C/dashboard 앱 12개를 만들며 배우는..
ddaengddaeng.tistory.com
출처
앱 12개를 만들며 배우는 Swift4 & iOS11 아이폰 iOS 개발 강좌
앱 12개를 만들며 배우는 Swift4 & iOS11 아이폰 iOS 개발 강좌 - 인프런
Swift4 를 이용해 여러개의 앱을 만들어 보는 iOS 개발강좌 입니다. 기본적인 내용을 빠르게 학습하고, 여러 실용적인 예제들로 지식을 자신을 것으로 만들 수 있는 강좌 입니다. 최대한 빠르고, 효
www.inflearn.com
주요 내용 : 비주얼 도서 관리 앱
- iOS single view로 시작
- Product Name : VisualBookManager
- Main.storyboard : view 위에 다른 것들을 올려서 사용
- ViewController.swift > 오른쪽 버튼 > Add files to... > BookManager 프로젝트의 Book, BookManager, main.swift 3개 파일 선택
- main.swift에서 BookManager의 func viewDidLoad()에 아래 코드 추가 (var는 let으로 바꿔야 에러 안남)
var book1 = Book(name: "햄릿", genre: "비극", author: "셰익스피어") var book2 = Book(name: "누구를 위하여 종을 울리나", genre: "소설", author: "헤밍웨이") var book3 = Book(name: "죄와벌", genre: "사실주의", author: "톨스토이") var myBookManager = BookManager() myBookManager.registerBook(bookObject: book1) myBookManager.registerBook(bookObject: book2) myBookManager.registerBook(bookObject: book3)
- Main.storyboard > View Controller 클릭 > 우측의 Connection Inspector 클릭 > showAllBooksAction을 Show All Books 버튼과 연결 (Touch Up inside)
- View Controller > @IBOutlet weak var outputTextView: UITextView! 추가 > Main.storyboard > outputTextView와 Text View 연결
- 더 진행하기 전에 Book.swift와 BookManager.swift 의 name, genre, author에 ?를 붙여서 optional 허용 필요 & print에는 !로 unwrapping
- Main.storyboard > View Controller 클릭 > 우측의 Connection Inspector 클릭 > showAllBooksAction을 Show All Books 버튼과 연결 (Touch Up inside)
- Main.storyboard > View Controller 클릭 > 우측의 Connection Inspector 클릭 > TextField, # of books를 입력 필드와 각각 연결
- countLabel 변수 추가
- searchAction 메소드 추가
- removeAction 메소드 추가
완성 예시

코드
1) ViewController.swift
import UIKit class ViewController: UIViewController { var myBookManager = BookManager() // 변수 정의 @IBOutlet weak var outputTextView: UITextView! @IBOutlet weak var nameTextField: UITextField! @IBOutlet weak var authorTextField: UITextField! @IBOutlet weak var genreTextField: UITextField! @IBOutlet weak var countLabel: UILabel! // 열자마자 실행 되는 코드 override func viewDidLoad() { super.viewDidLoad() let book1 = Book(name: "햄릿", genre: "비극", author: "셰익스피어") let book2 = Book(name: "누구를 위하여 종을 울리나", genre: "소설", author: "헤밍웨이") let book3 = Book(name: "죄와벌", genre: "사실주의", author: "톨스토이") myBookManager.registerBook(bookObject: book1) myBookManager.registerBook(bookObject: book2) myBookManager.registerBook(bookObject: book3) countLabel.text = "\(myBookManager.countBooks())" // Do any additional setup after loading the view. } // 책 추가 메소드 @IBAction func registerAction(_ sender:Any) { var bookTemp = Book() bookTemp.name = nameTextField.text! bookTemp.author = authorTextField.text! bookTemp.genre = genreTextField.text! myBookManager.registerBook(bookObject: bookTemp) outputTextView.text = "\(nameTextField.text!) has been registered!" // count 다시 불러오기 countLabel.text = "\(myBookManager.countBooks())" } @IBAction func searchAction(_ sender:Any) { let resultBook = myBookManager.searchBook(name: nameTextField.text!) if resultBook != nil { outputTextView.text = resultBook } else { outputTextView.text = "We don't have the book that you searched for." } } @IBAction func removeAction(_ sender:Any) { myBookManager.removeBook(name: nameTextField.text!) outputTextView.text = "\(nameTextField.text!) is removed!" countLabel.text = "\(myBookManager.countBooks())" } // 메소드 만들기 (메소드-버튼 연결해야 함) @IBAction func showAllBooksAction(_ sender: Any) { // print("showAllBookAction") outputTextView.text = myBookManager.showAllBooks() } }
2) Book.swift
struct Book { var name: String? var genre: String? var author: String? func bookPrint() { print("Name: \(name!)") print("Genre: \(genre!)") print("Author: \(author!)") print("--------------") } }
3) BookManager.swift
import Foundation class BookManager{ // 변수 var bookList = [Book]() // Book 이라는 데이터 타입이 들어가는 비어있는 배열 // 함수1 func registerBook(bookObject:Book) { bookList += [bookObject] } // 함수2 func showAllBooks() -> String { var strTemp = "" for bookTemp in bookList { strTemp += "Name: \(bookTemp.name!)\n" strTemp += "Genre: \(bookTemp.genre!)\n" strTemp += "Author: \(bookTemp.author!)\n" strTemp += "-------------------\n" } return strTemp } // 함수3 func countBooks() -> Int { return bookList.count } // 함수4 func searchBook(name: String) -> String? { var strTemp = "" for bookTemp in bookList { if bookTemp.name == name { strTemp += "Name: \(bookTemp.name!)\n" strTemp += "Genre: \(bookTemp.genre!)\n" strTemp += "Author: \(bookTemp.author!)\n" strTemp += "-------------------\n" return strTemp } } return nil } func removeBook(name: String) { for (index, value) in bookList.enumerated() { if value.name == name { bookList.remove(at: index) } } } }
'iOS' 카테고리의 다른 글
[Swift] 스위프트 실전 프로젝트 3. 회원가입하기 (0) | 2020.07.06 |
---|---|
[Swift] 스위프트 실전 프로젝트 2. 디지털 액자앱 만들기 (0) | 2020.07.04 |
[Swift] 스위프트 실전 프로젝트 1. 도서 관리 프로그램 만들기(2) (0) | 2020.07.03 |
[Swift] 스위프트 실전 프로젝트 1. 도서 관리 프로그램 만들기(1) (0) | 2020.07.03 |
[Swift] Optional (0) | 2020.07.03 |
댓글