패스트캠퍼스) ios 개발 챌린지 30

패스트캠퍼스 iOS 앱 개발 올인원 패키지 Online. 챌린지 참여 후기

이것으로 약 한 달간의 iOS 앱 개발 올인원 패키지 Online. 수강도 마무리가 되었다. 물론 앞으로 들어야할 강의도 한참 남아있지만 천천히 들으려고 한다. 지금 당장은 네이버의 프론트엔드 인턴에 합격하여 React개발에 집중하려고 한다. (앞으로 React로 계속 구직활동을 하게 될 것 같아서 swift 쓸 일이 있을까 모르겠다..) import UIKit class BountyViewController: UIViewController, UITableViewDataSource, UITableViewDelegate { let nameList = ["brook", "chopper", "franky", "luffy", "nami", "robin", "sanji", "zoro"] let bountyList..

[패스트캠퍼스 수강 후기] IOS개발강의 100% 환급 챌린지 29회차 미션

오늘은 그동안 만들던 원피스 현상금 앱의 마무리를 지었다. 그 중에서도 디테일 뷰를 구현하였는데, 테이블에서 셀을 선택하면 새로 생성되는 뷰를 디테일뷰라고 칭하기로 하였다 이 때 필요한 기능의 이름이 세그웨이다. 스토리보드에서 뷰를 하나 끌고온 다음에 이렇게 control을 누른상태로 드래그하여 와이어를 이어주면 된다. //UITableViewDelegate func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath){ print("-->\(indexPath.row)") performSegue(withIdentifier: "showDetail", sender: nil) } 그리고 기존의 테이블뷰 코드에 performSegue함..

[패스트캠퍼스 수강 후기] IOS개발강의 100% 환급 챌린지 28회차 미션

오늘 배운 것은 테이블뷰 프로토콜이다. 프로토콜이란 규약이라는 뜻으로, 테이블뷰를 구현하기 위한 규칙이라고 볼 수 있겠다. 오늘은 진도를 쑥쑥 나가서 살짝 따라가기가 벅찼다. 코드도 눈에 익지 않은 모르는 내용들이 많이 나왔다. 리액트 앱 처음 만들 때랑 비슷한 느낌이다. 코드 외에도 와이어로 이어준 것도 많아서 복습을 할 수 있을지 모르겠다. class BountyViewController: UIViewController, UITableViewDataSource, UITableViewDelegate { let nameList = ["brook", "chopper", "franky", "luffy", "nami", "robin", "sanji", "zoro"] let bountyList = [330000..

[패스트캠퍼스 수강 후기] IOS개발강의 100% 환급 챌린지 27회차 미션

class Student: Person { var grades: [Grade] = [] // 상위클래스로부터 상속받아 오버라이드한 designated 이니셜라이저 override init(firstName: String, lastName: String) { super.init(firstName: firstName, lastName: lastName) } // convenience 이니셜라이저로 클래스 선언을 간략하게 할 수 있다. convenience init(student: Student) { // 반드시 designated 이니셜라이저를 호출해야함 self.init(firstName: student.firstName, lastName: student.lastName) } } let student1 =..

[패스트캠퍼스 수강 후기] IOS개발강의 100% 환급 챌린지 26회차 미션

상속을 하면 좋은 경우는 다음과 같다. single responsibility: 각 클래스는 하나의 책임만 가지면 된다 type safety: 클래스 간 구분을 명확히 지어줘야할 때 shared based class: 다자녀: 기본 동작이 다양하게 구현되어야하는 경우 extensibility: 확장성이 필요한 경우 identity: 정체성을 파악하기 위해서. 어떤 인스턴스인지 확인하려고 상속받을 수 있다. class StudentAthlete: Student { var minimumTrainingTime: Int = 2 var trainedTime: Int = 0 var sports: [String] init(firstName: String, lastName: String, sports: [String]..

[패스트캠퍼스 수강 후기] IOS개발강의 100% 환급 챌린지 25회차 미션

구조체 vs 클래스 구조체를 사용해야하는 경우 클래스를 사용해야하는 경우 클래스의 상속에 대해 알아보자 Person을 상속받은 Student 클래스 struct Grade { var letter: Character var points: Double var credits: Double } class Person { var firstName: String var lastName: String init(firstName: String, lastName: String) { self.firstName = firstName self.lastName = lastName } func printMyName() { print("My name is \(firstName) \(lastName)") } } class Stude..

[패스트캠퍼스 수강 후기] IOS개발강의 100% 환급 챌린지 24회차 미션

오늘은 구조체의 확장형, 다른말로 상속에 대해서 배웠다. struct Math { static func abs(value: Int) -> Int { if value > 0 { return value } else { return -value } } } Math.abs(value: -20) // 제곱, 반값 extension Math { static func sqaure(value: Int) -> Int { return value * value } static func half(value: Int) -> Int { return value/2 } } Math.sqaure(value: 5) Math.half(value: 20) extension이라는 키워드를 func 대신 붙여서 사용할 수 있다. 그런데 처음부..

[패스트캠퍼스 수강 후기] IOS개발강의 100% 환급 챌린지 23회차 미션

willset (x)->(y): 현재값이 x인데 앞으로 바뀔 값이 y didset (x)->(y): 이전값이 x인데 바뀌고 난 값이 y stored property에서만 사용 가능하다 struct Person { var firstName: String { willSet { print("willSet: \(firstName) --> \(newValue)") } didSet { print("didSet: \(oldValue) --> \(firstName)") } } var lastName: String lazy var isPopular: Bool = { if fullName == "Jay Park" { return true } else { return false } }() ... static let isAl..

[패스트캠퍼스 수강 후기] IOS개발강의 100% 환급 챌린지 22회차 미션

여기서 CustomStringConvertible과 var description이 프로토콜이다. // CustomStringConvertible struct Lecture: CustomStringConvertible { var description: String { return "Title: \(name), Instructor: \(instructor)" } let name: String let instructor: String let numOfStudent: Int } let lec1 = Lecture(name: "iOS Basic", instructor: "Jason", numOfStudent: 5) // 구조체 lec1을 참조할 경우 // Title: iOS Basic, Instructor: Jas..

[패스트캠퍼스 수강 후기] IOS개발강의 100% 환급 챌린지 21회차 미션

PersonClass는 자신을 참조하는 변수를 할당해줄 수 있다. 이 경우 할당된 두 변수 pClass1, pClass2는 PersonClass라는 하나의 클래스만을 가리키고 있다. 그 클래스만을 가리키는 여러 개의 변수가 있을 수 있는 것이다 PersonStruct는 자신의 모양과 똑같은 분신을 복제해서 나눠준다 각 변수 pStruct1, pStruct2는 PersonStruct의 형식을 똑같이 갖고, 독자적인 정보를 저장할 수 있다. 구조체를 이용해 가장 가까운 편의점 찾기 func distance(current: Location, target: Location) -> Double { // 피타고라스.. let distanceX = Double(target.x - current.x) let dista..