배열배열은 한 개의 값에 저장되어 있는값들의 모임이다. 예를 들어, John, Paul, George, Ringo는 이름이지만 배열은 이것들을 Beatles라는 이름의 단일 값 안에 그룹화할 수 있게 한다.코드 상에서, 우리는 이렇게 적는다마지막 줄이 배열을 만든다 :
이제 너는 스위프트의 모든 기본 타입들을 알았으므로 우리는 연산자를 이용해서 그들을 결합할 수 있다. 연산자들은 + 와 – 같은 작은 수학적 기호이고 스위프트는 넓은 범위를 갖고 있다.여기 몇 가지 테스트 변수들이 있다.우리는 더하기와 빼기를 + 와 – 로 할 수 있다
스위프트에는 루프를 작성하는 여러 방법이 있지만 그들 기저에 깔려있는 매커니즘은 모두 같다 – 조건이 거짓으로 평가될 때까지 해당 코드를 반복적으로 실행하라.스위프트에서 가장 일반적인 루프는 for 루프문이다. – 이것은 배열과 범위를 반복하고 루프가 한 번 돌아갈 때
함수는 코드를 재사용할 수 있게 한다. 이는 흥미로운 작동을 하는 함수를 작성한 후에 그 함수를 다양한 곳에서 실행할 수 있다는 것을 의미한다. 코드를 반복하는 것은 일반적으로 좋지 않고 함수는 이를 피할 수 있게 도와준다.우리는 어플 사용자에게 도움 정보를 출력하는
스위프트에서 우리는 문자열이나 정수형처럼 함수를 사용할 수 있다. 이는 네가 함수를 만들고 이를 변수에 할당할 수 있으며 그 함수를 변수를 사용하여 호출할 수 있고 그 함수를 매개변수처럼 다른 함수에 전달할 수도 있다는 것을 의미한다.메시지를 출력하는 간단한 예제로부터
여기서 클로져는 line noise 처럼 읽기 시작할 수 있다 : 네가 함수로 전달한 클로져는 자체 매개변수도 받아들일 수 있다.우리는 “매개변수를 받지 않고 아무것도 반환하지 않는다” 를 의미하는 ( ) -> Void 를 사용해왔지만 클로져가 받아들여야하는 매개변수의
스위프트에서 너의 고유한 타입을 두 가지 방식으로 선언할 수 있고 그 중 가장 일반적인 방법은 structrues 또는 structs 라고 불린다. Struct는 자신만의 변수와 상수, 함수를 가질 수 있고 너가 원하는 대로 만들고 사용될 수 있다.간단한 예시로 시작해
이니셜라이저는 구조체를 만드는 다양한 방법을 제공하는 특별한 매서드이다. 모든 구조체들은 기본적으로 memberwiser initializer라고 불리는 하나를 가진다 – 이것은 구조체를 생생할 때 각 프로퍼티에 값을 주라고 요구한다.한 개의 프로퍼티를 가지는 User
클래스는 프로퍼티와 매서드를 가진 새로운 타입을 만든다는 점에서 구조체와 유사하지만 다섯가지 중요한 차이점을 가지며 각 차이점을 한 번에 하나씩 설명할 것이다.클래스와 구조체 간의 첫번째 차이점은 클래스에는 멤버별 이니셜라이저가 없다는 것이다.이것은 만약 클래스 안에
프로토콜은 어떤 메서드와 프로퍼티을 꼭 가지고 있어야하는지 설명하는 방식이다. 그런 뒤에 해당 프로토콜을 사용하는 유형을 스위프트에 알려준다. – 프로터콜을 채택하거나 준수하는 것으로 알려진 과정이다.예를 들어, 우리는 id 프로퍼티로 받아들이는 함수를 만들 수 있지만
우리는 5와 같은 값을 저장하기 위해서 Int 같은 타입을 사용해왔다. 하지만 네가 사용자의 age 프로퍼티를 저장하고 싶지만 나이를 모른다면 어떻게 할 것인가?너는 “글쎼, 0을 저장할거야” 라고 말할 수 있지만 갓난아기와 네가 나이를 모르는 사람 사이에 혼단이 생길
모든 유용한 프로그램은 어떤 지점에서 데이터를 저장할 필요가 있고 스위프트에는 두 가지 방법이 있다 : 변수와 상수 이다. 변수는 네가 원할 때 값을 변화시킬 수 있는 데이터 저장소이고 상수는 한번 설정하면 변화할 수 없는 데이터 저장소이다. 따라서, 변수에는 변할 수
배열은 많은 값을 하나의 콜렉션에 함께 넣을 수 있게 하고 콜렉션에서 위치별로 그 값에 접근할 수 있게 한다. 스위프트는 배열이 가지고 있는 데이터 타입을 알아내기 위해 타입 추론을 사용한다.스위프트는 배열의 시작과 끝을 표시하기 위해 대괄호를 사용하고 배열의 각 아이
함수를 사용하면 특정 기능을 수행하는 재사용가능한 코드를 정의할 수 있다. 일반적으로 함수는 작동방식을 수정하기 위해 일부 값을 수정할 수 있지만 필수는 아니다.간단한 함수로 시작해 보자:만약 이 코드를 플레이그라운드에 작성한다면, 아무것도 출력되지 않을 것이다. 그리
옵셔널 체이닝은 옵셔널이 값을 가질 때만 코드를 실행시킨다이것은 결과 판넬에 “The album is Optional(“Taylor Swift”)”라고 출력한다.만약 albumReleased의 리턴 값을 대문자로 바꾸고 싶다면, string의 uppercased() 메
구조체와 클래스는 고유한 변수와 상수를 가질 수 있고 이들은 프로퍼티라 불린다. 프로퍼티를 메서드 안에서 사용하면 자동으로 같은 object에 속한 값을 사용한다프로퍼티가 변경되려하거나 변경되었을 때 실행할 코드를 추가할 수 있다. 이것은 예를 들어 사용자의 인터페이스
import UIKit : "이 파일은 iOS 의 사용자 인터페이스 toolkit을 참조한다는 의미이다.class ViewController: UIViewController: UIViewController를 기반으로 ViewController라는 새로운 데이터 화면을
IBOutlet : Xcode에게 이 코드라인과 인터페이스 빌드 사이에 연결이 있다는 것을 알려준다.var imageView: UIImageView!: 프로퍼티가 UIImageView 유형임을 선언한다. 강제 옵셔널 언래핑 "!" 은 UIImageVIew가 존재할 수도
shuffle() : 제 자리에서 해당 배열을 섞음shuffled() : 섞은 새로운 배열을 반환함여러 버튼이 하나의 같은 메서드를 같이 가질 수 있다.버튼의 tag값은 default 로 0이고, storyboard에서 이를 설정할 수 있다.tag값을 이용하여 여러 개
UINavigationController 는 기본적으로 UINavigationBar라는 막대를 가지며, 이 bar에 메서드를 호출하는 버튼을 추가할 수 있다.navigationItem.rightBarButtonItem : 뷰 컨트롤러의 NavigationItem에 ri
iOS에서 웹 뷰를 다루는 방법에는 두 가지가 있지만 지금은 WKWebView를 사용할 것이다.이를 위해 WebKit 프레임워크를 추가해준다.웹 뷰를 만들 때, 나중에 참조할 수 있도록 프로퍼티로 저장해야한다. 스토리보드에 레이아웃을 로드하는 기본 구현이 있기 때문에
UIToolbar는 사용자가 탭 할 수 있는 UIBarButtonItem 의 집합이다. UIProgressView는 작업이 얼만큼 수행되었는지 보여주는 바이다. UIToolbar를 사용하는 방법은 매우 간단하다. UInavigationContorller 내에서 vie
캡쳐리스트는 클로져의 매개변수 목록 앞에 오고 값을 strong, weak, unowned 로 캡쳐한다. > 강한 참조 주기를 피하기 위해 많이 사용한다. 어떤 것을 사용할 지 결정하는 것은 쉽지 않지만 학습을 진행하면서 깨달을 수 있을 것이다. 여기 간단한 클래스
Bundle의 내장 메소드를 이용하여 파일의 위치를 찾는다forResource : 파일 이름, withExtension: 확장자String(ContentsOf: startWordsURL) : 파일을 문자열로 로드하기 위해서 String 인스턴스를 만들때 특정 경로의 파
UITextChecker : 스팰링 오류를 발견하도록 설계된 iOS 클래스이다. 주어진 단어가 실제 존재하는지 아닌지 알 수 있다. NSRange : 시작 위치와 길이를 가지는 문자열 범위를 저장하는데 사용된다. 전체 문자열을 검사하기 위해 시작 위치를 0 으로 두고,
VFL(Auto Layout Visual Format Language)label1.translatesAutoresizingMaskIntoConstraints = false iOS는 기본적으로 뷰의 크기와 위치를 기반으로 Autolayout constraints를 생성하
JSON = JavaScript Object Notation\-> 받으려는 JSON 데이터의 일부metadata는 responseInfo를 포함하고 있는데 이것은 상태 값을 가진다. status 200은 개발자들이 "모든 것이 OK이다"라고 말하기 위해 사용한다.res
웹의 복잡한 콘텐츠를 렌더링하는 가장 쉬운 방법은 거의 항상 WKWebView를 사용하는 것이다.그러나 petition 첵스트를 웹 뷰에 바로 넣으면 작게 보일 것이기 때문에 HTML로 래핑해야한다.HTML은 width는 기기의 width와 같고, 폰트 사이즈는 기본
코드로 view를 작성할 때엔 loadView() 메서드를 호출하여 유저 인터페이스를 생성하여 view를 초기화해 준 뒤 viewDidLoad()에서 추가 작업을 해야한다. viewController의 lifeCyclestoryBoard나 xib등 view가 존재하지
enumerated() : (n,x) 쌍으로 된 시퀀스를 반환한다. n은 0에서 시작하는 연속적인 정수를 나타내고, x는 시퀀스의 element를 나타낸다.enumerated() - Apple.documentreplacingOcurrences(of: "|", with:
Blocking call : Data의 contentsOf를 사용하여 인터넷에서 데이터를 다운로드하는 것 서버에 연결되고 모든 데이터를 완전히 다운로드할 때까지 메서드의 추가 실행 코드를 차단한다. 백그라운드에서 앱이 여러 명령을 실행하므로 여러 CPU 코어를
UserDefaults를 사용하여 앱이 설치된 동안 모든 기본 데이터 유형을 저장할 수 있다.Bool, Float, Double, Int, String, URL뿐만 아니라 array, Dictionary, date 도 저장할 수 있다.UserDefaults에 데이터를
UserDefaults에 정수, 날짜, 문자열, 배열 등을 저장할 수 있지만몇 가지 규칙을 따르면 모든 종류의 데이터를 저장할 수도 있다.NSKeyedArchiver의 archivedData() 메서드를 사용하면 object 그래프를 Data로 변환한 다음 다름 obj
NSCoding은 UserDefaults를 사용할 때 데이터를 읽고 쓸 수 있는 매우 좋은 방식이고,Objective-C 코드와 함께하는 Swift 코드를 작성해야할 때 가장 흔히 선택된다.그러나, 만약 Swift만을 사용한다면, Codable 프로토콜이 훨씬 사용하기
애니메이션은 iOS 에서 매우 중요하다.애니메이션을 잘 다루지 않으면 UI디자인이 끔찍해진다...ㅠㅠ애니메이션은 UIView 클래스의 animate(withDuration:) 메서드로 실행된다.animate() 메서드는 다음의 파마리터를 가진다.withDuration
UITextField와 다르게 UITextView에서는 여러 줄의 텍스트를 작성할 수 있습니다.그렇기에 텍스트를 많이 작성한 경우, 작성한 텍스트가 키보드에 가려 보이지 않는 이슈가 발생합니다.상태가 변화할 때마다 그 변화를 알려주는 notificationCenter
앱 또는 앱 확장에 대한 알림 관련 활동을 관리하기 위한 중앙 개체입니다.이 개체의 UNUserNotificationCenterDelegate를 채택하여 다음의 활동들을 할 수 있습니다.Asking Permission to Use Notifications : 알림을 표
CLBeaconRegion이란?iBeacon 기기의 존재를 감지하는 데 사용되는 영역입니다.\[자세히 - Apple document\[(https://developer.apple.com/documentation/corelocation/clbeaconregion
자세히 - Apple documentCore Graphics 지원 이미지를 만들기 위한 그래픽 렌더러입니다.애플문서에는 다음과 같이 설명되어 있는데UIGraphicsImageRenderer 이니까 UIKit과 관련 있는 클래스 인것 같은데 Core Graphics와 무
LocalAuthentication 프레임워크의 일부인 TouchID 와 FaceID를 사용하는 방법입니다.이 작업은 아래의 순서에 따라 실행됩니다.생체 인증(Biometric Authentication)을 지원하는 기기인지 확인합니다.생체 인증을 지원한다면, 생체 측