분류 전체보기 141

swift - Struct vs Class

swift에서 struct와 class의 차이점에 대해 정리한다. 가장 큰 차이점은 superclass로부터 상속받을 수 있다는 점이 있지만, 그것과는 별개로 superclass로부터 상속받지 않는 기본 class와 struct의 차이점을 정리할 것이다. // ##### Enemy.swift ##### struct Enemy { // ##### 1 ###### var health : Int var attackStrength : Int // structs are immutable --> mutating func 을 사용해야 property의 값을 바꿀 수 있다. mutating func takeDamage(amount: Int) { health -= amount } func move() { print("M..

iOS/swift 2021.07.22

Swift - Class & Inheritance

클래스는 구조체와 마찬가지로 청사진을 정의하는 하나의 방법이다. property와 method들을 설계할 수 있도록 하고, init()을 통해 어플을 실행했을 때 클래스를 실제 객체로 초기화할 수 있다. 클래스로부터 어떻게 객체를 만들 것인지, 그리고 상속(inheritance), subclass, superclass와 같은 객체 지향 프로그래밍의 핵심 개념 중 일부는 메소드를 재정의한다는 것이 의미하는 것, 슈퍼클래스에서 메소드를 호출한다는 것이 의미하는 것이 있는데, 그것들에 대해 다룬다. xcode에서 new project를 만들 것이다. 전체 어플을 만들지는 않지만, 여러 개의 swift file을 가질 수 있는 프로젝트를 만들 것이기 때문에 playground를 만들어서 연습하는 대신 macOS..

iOS/swift 2021.07.19

20210715 BMI caculator project -2

지난 번에 UISlider를 조절함에 따라 height, weight 값이 출력되도록 만들었는데 이번에는 'calculate' 버튼을 눌렀을 때 해당 수치를 이용해 BMI value를 계산하도록 만들 것이다. caculate 버튼을 눌렀을 때의 코드블럭을 작성할건데, weight, height value의 값들은 위의 IBAction function과 별개이므로 바로 사용할 수 없다. 코드블럭을 채우기 위해 사용하기 위한 방법들이 여러 가지가 있는데, 하나씩 사용해볼 것이다. 그리고, BMI = Weight(kg) / Height(m) ² 위의 식으로 계산할 것이다. Challenge 1 ) height / weight Slider에 대한 IBOutlet 연결을 생성하여 사용하는 방법 2개의 슬라이더에 ..

Today I Learned 2021.07.17

20210713 BMI calculator project -1

지금까지는 Main.storyboard에 1개의 스크린만 있는 어플만 다루었다면 BMI caculator는 2개의 스크린이 존재한다. BMI를 측정하기 위한 데이터를 입력하는 화면과 결과화면이 따로 존재한다. 입력화면에는 키와 몸무게, 계산버튼이 있고 결과화면에는 BMI 결과가 나타나게 할 것이며, 재측정버튼이 있다. 먼저 입력화면을 보면 키와 몸무게를 입력하는 곳에 이전까지는 사용하지 않았던 'UISlider'가 있는 것을 확인할 수 있다. Library - 'Slider'으로 등록할 수 있고, Attribute inspector에서 MIN/MAX 값을 정할 수 있다. Challenge ) Height Slider/Weight Slider를 IBAction(name: height slider / wei..

Today I Learned 2021.07.15

20210712 Destiny project -3

스토리 3개가 전부였을 때는 이전까지의 코드에 문제가 없었지만, 스토리의 수가 늘어날 수록 코드가 복잡해지게 된다. MVC design pattern과 구조체를 다루는 것을 연습하는 정도에 의미를 두고 다른 로직을 사용하기 위해 코드를 수정했다. 먼저 stories 배열에 제공받은 Story들을 넣었다. Story( title: "Your car has blown a tire on a winding road in the middle of nowhere with no cell phone reception. You decide to hitchhike. A rusty pickup truck rumbles to a stop next to you. A man with a wide brimmed hat with s..

Today I Learned 2021.07.13

20210711 Destiny project -2

Story.swift 파일 내에 구조체를 만들고, title / choice1 / choice2 를 각각 따로 저장하는 대신 하나의 배열에 넣어서 만들어봤다. 'Story' structure를 Story.swift에 만들어줌 StoryBrain.swift 안에 StoryBrain 구조체를 하나 만들었다. 구조체 안에서 위와 같이 3개의 스토리를 포함하는 'stories' 배열을 만들어줌 그리고, ViewController.swift에서 사용하기 위한 getStoryTitle, getStoryChoice 함수를 만들어줌 ViewController.swift 는 위와 같이 수정하였다. StoryBrain.swift에서 만든 구조체를 사용하기 위해 storyBrain이라는 하나의 변수를 선언해주고 update..

Today I Learned 2021.07.12

20210706 Destiny project -1

Destiny 어플을 만들어본다. d&d처럼 스토리가 진행되면서 사용자가 선택을 하게되고, 그 선택에 따라 다르게 스토리가 진행되면서 전체적인 이야기를 읽게되는 방식의 어플이다. 먼저 기본적인 UI가 완성되어있는 skeleton project를 다운받아서 시작했다. Story text 부분에 스토리가, Choice 버튼에 각각의 선택지가 들어갈 것이며 MVC design pattern을 사용할 예정이다. 1. Model-Story.swift에 구조체를 하나 먼저 만들었다. 각각의 항목에 문자열을 사용할 것이기 때문에 String으로 지정했다. 2. Controller - ViewController.swift에 IBOutlet으로 각각의 버튼과 레이블이 연결되어 있고, IBAction 하나에 레이블과 버튼..

Today I Learned 2021.07.06

20210701 Quizzler project - 5

먼저, 구조체 내부에서의 immutability에 대해 정리했다. https://dmsitter.tistory.com/115 swift - immutability (구조체 안에서) immutable -- let과 같이 불변 mutable -- var과 같이 가변적 struct Town { let name: String var citizens: [String] var resources: [String : Int] init(citizens: [String], name: String, resources: [Strin.. dmsitter.tistory.com QuizBrain.swift의 struct 내부에 있는 두 함수(메소드)를 비교해보면, getProgress()는 property의 값을 변화시키지 않지만..

Today I Learned 2021.07.01

swift - immutability (구조체 안에서)

immutable -- let과 같이 불변 mutable -- var과 같이 가변적 struct Town { let name: String var citizens: [String] var resources: [String : Int] init(citizens: [String], name: String, resources: [String : Int]) { self.citizens = citizens self.name = name.uppercased() self.resources = resources } func harvestRice() { resources["Rice"] = 100 // 위의 코드는 self.resources["Rice"] = 100과 동일한 코드이다. } } 위의 예시를 살펴보면, str..

iOS/swift 2021.07.01

20210628 Quizzler project - 4 (with MVC design pattern)

https://dmsitter.tistory.com/112 MVC Design pattern Design pattern에는 여러가지가 있다. Object Pool, Facade, MVP, Iterator, Singleton, MVC, Memento, MVVM, VIPER 등.. 사용하려는 목적에 따라 디자인 패턴을 정해서 사용하는데, 그 중 모바일 어플(특히나 애.. dmsitter.tistory.com Quizzler 어플의 이해와 수정을 쉽게 하기위해 MVC design pattern 을 이용할 것이다. 먼저, quiz array를 Viewcontroller.swift가 아닌 다른 곳으로 옮겨줄 건데, Question.swift - 우클릭 - New Group from Selection 을 선택해준다..

Today I Learned 2021.06.29