프로젝트 리소스(Image, ColorSet 등) 관리하기 import UIKit // 리소스에 접근하기 위해서 R import import R class ViewController: UIViewController { @IBOutlet weak var imageView: UIImageView! override func viewDidLoad() { super.viewDidLoad() } override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) // 이미지 접근하기 self.imageView.image = R.Image.karina } } 프로젝트를 하다 보니 프로젝트 내에 있는 Image 나 ColorSet을 효율적으로 관리하고 싶다는 생각이 들었는데... 찾다보니 SwiftGe.. 사진 갤러리 이미지에 접근하기 1 (부제 UIImagePickerController) 회사 기획팀에서 문의가 들어왔다. 게시판이나 공지사항을 쓰는 데 현재 총 사진을 다섯개 올릴 수 있는 데 하나씩 밖에 올라가지 않아 문의가 많다고 한다. 또 추후에 게시판 구현시에 도움이 될까하여 이번에는 직접 프레임워크를 작성해 봤다. 사진(갤러리)에 접근하기 UIImagePickerController iOS에서 사진에 접근하는 가장 기본적인 방법은 UIImagePicker를 사용하는 거다. UIImagePicker 다 좋다 그런데 사진이 하나씩 밖에 선택이 안되네.... 사진 다중 선택을 가능하게 하는 다른 라이브러리를 선택할까 하다가 새로운 프레임워크를 만들어보기로 했다. 그래도 UIImagePicker를 통해 사진 선택 화면을 띄우는 건 어떻게 하는 지 알아보자. 간단히 Main 스토리보드 가운데.. 카운팅 앱 만들기 - 2 1. 라벨에 카운팅 하는 숫자 데이터를 연결시켜 보겠습니다. Main 스토리 보드를 선택하고 어시스턴트 에디터를 켜보겠습니다. 어시스턴트 에디터는 Xcode 상단 메뉴에서 Editor -> Assistant 를 누르면 보이거나 control + option + command + Enter 를 누르면 보입니다. 화면 좌측에 보이는 코드는 현재 보이는 Main 스토리 보드에 연결된 UIViewController 파일의 내용입니다. ViewController.swift를 아래 코드와 같이 변경해 주세요. 아래 코드에서 Main 스토리보드에서 Counter 라벨에 표시하기 위한 데이터인 counter를 추가했습니다. 정수를 세기 위한 용도여서 타입은 Int 입니다. // // ViewController.swif.. 카운팅 앱 만들기 - 1 ios 개발 지식을 정리 및 공부할 겸 강의 비슷하게 쓰는 글입니다. 두서가 없거나 이해가 안되는 것이 있으면 댓글로 달아주시면 답변을 달아드리겠습니다. 이 글에서는 ios 입문자를 위한 가장 기본적인 카운팅 앱을 만들어 보겠습니다. 강의 UIKit 내용으로 진행합니다. 준비물은 맥북 또는 맥 컴퓨터, 그리고 XCode 입니다. 1. XCode를 열고 새로운 프로젝트를 생성합니다. 프로젝트 이름을 CountingApp으로 하고 진행하겠습니다. 프로젝트 이름은 CountingApp이 아니라 다르게 하셔도 무방합니다. 프로젝트를 생성하고 나면 위와 같은 화면이 보일 것입니다. 기본적인 앱에서는 설정할 것이 없으니 여기는 패스합시다. 그리고 우리는 옆 탐색창이 보이는 곳에서 Main 을 선택해줍시다. 2. 앱.. 조합(Combination) 구현 이 글에서는 swift로 n개의 원소가 주어진 배열이 주어졌을 때 r개(0 < r [[T]] { if k == 0 { return [[]] } guard let first = elements.first else { return [] } let head = [first] // n-1Cr-1 let includeFirst = uCombination(elements: elements.dropFirst(), k: k - 1) // 첫 번째 원소는 반드시 포함한 조합의 결과 var ret = includeFirst.map { head + $0} // 첫 번째 원소는 반드시 포함하지 않는 조합의 결과 // n-1Cr var excludeFirst = uCombination(elements: elements.drop.. 익스텐션(Extension) 2편 익스텐션으로 클래스 타입에 편의 이니셜라이져는 추가할 수 있지만, 지정 이니셜라이져는 추가할 수 없다. 지정 이니셜라이져와 디이니셜라이져는 반드시 클래스 타입의 구현부에 위치해야 또한 익스텐션을 통해 서브스크립트를 추가할 수도 있다. 익스텐션(Extension) 1편 C++ 에서는 찾기 힘든 기능인 익스텐션(Extension)이라는 기능에 대해서 공부 중이다. 익스텐션은 기존의 Objective-C에 존재하는 카테고리와 유사한 기능이라고 한다. 익스텐션은 클래스의 상속과 유사해 보이지만 새로운 기능을 추가하는 것만 가능할 뿐, 기존에 존재하는 기능을 재정의할 수 없다고 한다. 상속 익스텐션 확장 수직 확장 수평 확장 사용 클래스 타입에서만 사용 클래스, 구조체, 프로토콜, 제네릭 등 모든 타입에서 사용 재정의 재정의 가능 재정의 불가 (위 표는 야곰의 스위프트 프로그래밍 3판에 나온 표입니다.) Swift의 기본 타입인 Int에 새로운 연산 프로퍼티를 추가하여 짝수인지 홀수인지 판별할 수 있다. 또한 메서드를 추가할 수도 있다. 그 후에는 아래처럼 사용 가능하다. 이전 1 다음