Json 제이슨..!누구냐 넌? Json(JavaScript Object Notation) 메모리에서 살고있는 객체를 디스크에 저장했다가 다음에 다시 사용한다던지, 다른 컴퓨터 다른 시스템으로 전달을 하고 싶을때 사용할수있다. 메모리에서 살고있는 객체는 0,1 로 이루어져 있다. 읽고 쓰는 방식이 컴퓨터 마다 다르다. 그렇기에 0,1 그대로를 usb 등 매개체에 담아 다른곳에 보내게 되면 제대로 읽고 쓸수 없게될 확률이 높다. 이때 Json 형식으로 저장하여 옮기게되면 다른 컴퓨터 혹은 시스템에서 내가 만들어둔 객체를 다른곳에서도 동일하게 해석하여 내가 만들어둔 객체와 동일하게 작동하도록 해준다. 쉽게 얘기하면 컴퓨터와 컴퓨터가 0,1 을 동일하게 해석할수있게끔 하는 약속이 필요했다. Json 의 규칙들..
Assets 에서 Json 파일 읽기 프로젝트에서 Assets 에 포함된 Json 파일에 접근하기 위해서는 NSDataAsset 을 사용할수 있다. NSDataAsset 공식 문서의 선언 부를 보자! class NSDataAsset: NSObject 요녀석을 사용하려면 UIKit 을 import 해줘야 한다! 이녀석을 사용하면 JSON 파일을 NSData 타입으로 변환 해준다. 사용 방법 static func parse( name: String) -> Self? { guard let asset = NSDataAsset(name: name) else { return nil } let jsonData = try? JSONDecoder().decode(Self.self, from: asset.data) ret..
UIViewController UIKit 앱의 뷰 계층 구조를 관리하는 객체 UIViewController 의 class는 모든 View Controller 의 공통적인 공유 동작을 정의한다. 클래스의 인스턴스를 직접 만드는 경우는 거의 없다. 대신 뷰 컨트롤러의 뷰 계층 구조를 관리하는 데 필요한 메서드와 속성을 하위 클래스로 만들고 추가한다. 뷰 컨트롤러의 주요 역할 데이터가 변경되면 View의 화면을 변경된 값으로 업데이트한다. View 를 통해 사용자와 상호작용에 응답한다. View 에 표시될 컴포넌트? 등의 크기, 전체 인터페이스 레이아웃 관리 앱내에서 다른 View Controller 와 다른 객체의 관계를 조정한다. ViewController 는 관리하는 View 에 밀접하게 연결되어 있으며..
Singleton Pattern Singleton Pattern 이란 특정 용도로 사용될 객체 '한개만' 만들어서 여러곳에서 공용으로 사용할때 사용하는 디자인 패턴 이다. (전역 변수 같은느낌?) 사용 예시 class Malrang { static let malrang = Malrang() var name = String? var age = Int? private init() {} } 위의 예시처럼 더이상 Malrang 의 객체를 만들수 없게끔 정의하여 사용할수 있다. Malrang 타입의 객체는 새로 초기화,생성 할수없 도록 init에 접근제한을 걸어준뒤 내부에서 Malrang의 타입을 갖는 객체를 어디서든 접근하여 사용할수 있도록 static 키워드를 이용해 어디서든 malrang 이라는 프로퍼티를 ..
CaseIterable When using a CaseIterable type, you can access a collection of all of the type’s cases by using the type’s allCases property. enum(열거형) 에서 caseIterable 프로토콜을 채택 할경우 allCases 타입 프로퍼티를 사용할수 있게 해준다. 예시 enum Something: CaseIterable { case a, b, c } let someCharacter = Something.allCases.randomElement() 위의 예시 처럼 enum 을 컬렉션 타입처럼 활용할수 있게 된다. 작동 방식은 프로토콜을 채택하였기 때문에 CaseIterable 의 해당 구현부를 en..
옵셔널 언래핑 방법들 Optional unwrapping 옵셔널로 감싸져있는 값을 옵셔널이 아닌값으로 추출하는 작업 (옵셔널 언래핑 대상이 nil 이면 안됩니다!!) 1. 강제 추출 Forced Unwrapping 옵셔널의 실제 값과 상관없이 강제로 값을 추출하는 것 옵셔널이 nil일 때 강제추출을 사용하면 에러가 발생 사용하게된다면 이옵셔널엔 무조건 값이 들어있을거야! 하고 확신할수 있는 상황에서만..사용하도록 하자 2. 옵셔널 바인딩 Optional Binding 옵셔널 값을 언래핑 하는 방법으로, 가장 많이 사용한다. (안전하다!!) 옵셔널 바인딩 방법에는 If let {} guard let…else {} 두가지가 있다 표현식 If let 임시상수이름 = 옵셔널값 { } guard let 임시상수이..
옵셔널 이란 값이 있을수도있고 없을수도 있다 를 나타낸다. 값이 없을수도 있는 경우에 옵셔널 (optionals) 을 사용합니다. 옵셔널은 2가지 가능성이 있습니다: 값이 있을경우 옵셔널을 풀어서 값에 접근하거나 값이 없을 수도 있습니다. 타입변환을 시도할때 실패할수도 있으므로 값이 없음을 반환하도록 옵셔널을 사용 해줄수있다. 예시 let possibleNumber = "123" let convertedNumber = Int(possibleNumber) // convertedNumber is inferred to be of type "Int?", or "optional Int" convertedNumber는 타입변환이 실패할수 있으므로 값이 없음을 나타내는 Int? 타입이 됩니다. nil 이란 옵셔널 타..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/cukvwx/btrspITSS6S/bGHW4UtEsJct5cu9W9V1kk/img.png)
빵쟁이가 ios 개발자가 되기위해 정독하고자 작성한 글 입니다! 표현이 이상하거나 잘못번역된 부분이 있을수 있습니다. 혹 누군가 읽다 잘못된 부분이 있으면 댓글로 알려주세요! Functions 함수는 특정 작업을 수행하는 코드 덩어리입니다. 함수가 하는 일을 이름과 함께 정의하고 이름을 호출 하여 사용합니다. Swift의 통합 함수 구문은 매개변수 이름이 없는 간단한 C 스타일 함수에서 각 매개변수에 대한 이름과 인수 레이블이 있는 복잡한 Objective-C 스타일 메서드에 이르기까지 모든 것을 표현할 수 있을 만큼 충분히 유연합니다. 매개변수는 함수 호출을 단순화하기 위해 default 값을 줄 수도 있고 함수 실행이 완료되면 전달된 매개 변수를 수정 가능하게 하는 입력 매개 변수로 전달될 수도 있다..