String(문자열) String은 유니코드로 이루어져있습니다. Charater 컨섭도 존재합니다. Charater는 사람이 인식하는 단일 문자입니다. 문자열은 배열처럼 숫자로 인덱싱이 불가능합니다. String.Index를 통하여 인덱싱합니다. ex) 첫문자(startIndex), 문자열 마지막(endIndex), 해당 문자의 첫번째 인덱스(index(of:)) 4번째 문자 구하기 let pizzaJoint = "café pesto" let firstCharacterIndex = pizzaJoint.startIndex // of type String.Index let fourthCharacterIndex = pizzaJoint.index(firstCharacterIndex, offsetBy: 3) le..
Mutating Concentraion 클래스를 struct 타입으로 변경시 처리해야 되는 것들을 확인해봅시다. class Concentraion { ... } struct Concentraion { ... } struct로 변경시 chooseCard 함수에서 애러가 발생합니다. 에러가 발생한 곳을 보면 모두 멤버 변수에 값을 대입하는 곳이다. 아래와 같이 구조체에서 값을 변경하는 함수는 mutating 키워드를 붙여줘야한다. indexOfOneAndOnlyFaceUpCard의 set 함수에서 값을 변경하고 있습니다. private var indexOfOneAndOnlyFaceUpCard: Int? { get { ... } set { for index in cards.indices { cards[inde..
Access Control(접근 제어) swift에서는 var, func 앞에 붙여 외부에서 접근을 제어하는 키워드들을 제공합니다. internal : 기본값, 접근제어 키워드를 입력 안한 경우와 같습니다. 나의 앱이나 프레임워크 내라면 어디든(어떤 객체나 코드) 접근이 가능한 코드입니다. private : 해당 객체 내에서만 사용이 가능합니다. private(set): 프로퍼티에만 사용이 가능합니다. 변수에 할당하는것은 비공개이나 외부에서는 불러오는것은 가능합니다. fileprivate: 현재 소스 코드 내에서만 사용이 가능합니다. 파일 안에 클래스가 여러개여도 모든 클래스에서 접근이 가능합니다. public: (프레임워크 전용)해당 프레임워크 외부에서 불러오기가 가능합니다. open: (프레임워크 전..
스택뷰 먼저 여러 버튼을 하나로 묶기 위해 스택뷰를 사용합니다. 가로로 4개의 버튼은 선택 한 뒤 Embed In 버튼을 눌러줍니다. 아래와 같은 메뉴가 표시되며 Stack View를 선택합시다. 스택 뷰를 추가하는 다른 접근 방법도 있습니다. 가로방향으로 4개 버튼들을 스택뷰로 묶습니다. 3개의 스택뷰가 나오는데 다시 스택뷰로 묶어 오토레이아웃 적용하기 모든 기기에서 일정한 모양으로 나타내기 위해 오토레이 아웃을 적용해봅시다. 먼저 스택 뷰 위치를 변경합시다. 현재 어떤 뷰가 선택되었는지는 Document Outline에서 확인 할 수 있습니다. 스택뷰를 드래그하여 좌상단으로 이동시킵시다. 스택뷰를 컨트롤 드래그한 뒤 스택뷰 윗쪽 영역에 놓고 아래창을 띄웁니다. 이번에는 컨트롤 드래그하여 뷰의 좌측 ..
실습시 기존에 작성했던 내용들을 MVC 모델로 변경하는 작업을 하게됩니다. 클래스 파일 생성 파일 이름은 파일내 가장 중요한 클래스 이름을 사용합니다. 메인 모델 클래스 이름을 Concentration으로 할 예정입니다. Concentration 클래스 작성 Concentration.swift 파일을 만들었으니 클래스 만들어 봅시다. 필요한 내용으로는 카드 묶음이 필요할것이고, 동작으로는 카드를 뒤집는 동작이 필요합니다. import Foundation class Concentraion { var cards = [Card]() func chooseCard(at index: Int) { } } chooseCard의 파라미터가 Card가 아닌 Int값을 전달하는데 이는 다른 UI에 보다 유연하게 처리하기 위..
MVC 모델 시스템내의 모든 객체들은 Model, View, Controller라는 세가지 캠프로 나뉠수 있습니다. Model 앱에서 '무엇(What)'에 해당하는 UI와 독립적인 객체입니다. Concentration 앱에서는 카드가 매치되는지, 카드를 언제 뒤집는지에 대한 내용이 있습니다. ( Concentration에 대한 지식 ) Controller 앱에서 '어떻게(How)'에 해당하는 객체입니다. 어떻게 Concentration 게임이 화면에 나오는지 관리합니다. View 컨트롤러의 하인(Minions)입니다. UIButton, UILabel등이 있습니다. 뷰에 나타낼 데이터를 인스턴스 변수로 가지고 있으면 안됩니다. Controller -> Model 접근 컨트롤러가 원할때마다 언제나 커뮤니케이..
기존 구조 개선 기존은 버튼을 하나 추가 할 때마다 함수를 하나씩 추가하는 구조였습니다. 기존 코드 var flipCount = 0 { didSet { flipCountLabel.text = "Flips: \(flipCount)" } } @IBOutlet weak var flipCountLabel: UILabel! @IBAction func touchCard(_ sender: UIButton) { flipCount += 1 flipCard(withEmoji: "👻", on: sender) } @IBAction func touchSecondCard(_ sender: UIButton) { flipCount += 1 flipCard(withEmoji: "🎃", on: sender) } 버튼을 추가하게 될 경우..
파일들 한 폴더에 넣기 여러개의 파일을 선택 한 뒤 하나의 폴더에 한번에 넣는 방법입니다. info 파일 경로 변경시 수업시 info 파일을 따로 두는 이유는 프로젝트 설정값이 변경해야해서 빼둔것으로 보입니다. 만약 따로 두고 싶다면 아래와 같이 경로를 수정해줘야합니다. 인터페이스 빌더에서 오브젝트 추가하기 인터페이스 빌더에서 버튼이나 라벨을 추가하는 방법입니다. 원하는 아이템을 선택한 뒤 드래그하여 원하는 영역에 추가하면 됩니다. 버튼 배경 색상 변경하기 버튼의 배경 색상을 변경하는 방법입니다. 버튼 폰트 속성 변경하기 버튼의 폰트 속성을 변경하는 방법입니다. 속성 인스펙터를 선택합니다. 스타일값을 디폴트로 변경합니다.(Plain인 경우) T 버튼을 누릅니다. 사이즈 값을 원하는 값으로 변경 후 Don..
- Total
- Today
- Yesterday
- Windows10
- 안드로이드
- 깃
- 비트 확인
- xcode
- 안드로이드 스튜디오
- ios
- 자바
- 다운로드
- static
- Stanford
- 콜백함수
- 설치
- Git
- 개발환경
- Android
- 윈도우
- Windows
- Java
- C++
- swift
- 콜백
- 맴버함수
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |