개발/Swift (21) 썸네일형 리스트형 [Swift] UI - Dynamic TableView 높낮이를 컨텐츠 사이즈에 따라 알아서 맞춰주는 테이블 뷰! CustomView 추가 import Foundation import UIKit class UIDynamicSizeTableView: UITableView { override var intrinsicContentSize: CGSize { let height = self.contentSize.height + self.contentInset.top + self.contentInset.bottom return CGSize(width: self.contentSize.width, height: height) } override func layoutSubviews() { self.invalidateIntrinsicContentSize() super.layo.. [Swift] Set 연산 세트는 중복이 없는 unique와 nil이 포함되지 않는 non-nil 순위를 정의할 수 없는 무순위 콜렉션이다. 애플 공식 문서에 적혀있듯이 Set는 형식상 Hashable 프로토콜에 부합해야한다. 세트는 배열에 비해 데이터 접근 속도가 매우 효율적이다. 크기가 n인 배열이 있을 때 이 배열 요소를 검색하기 위한 시간이 최대 O(n)이 걸린다면, 세트의 효율은 크기에 관계없이 O(1)을 유지한다. 세트 선언 및 초기화 var firstSet = Set() var secontSet : Set = ["hi", "there", "fred"] 세트는 배열 요소의 타입을 스위프트가 추측하지 않으니 직접 타입을 명시적으로 선언해주어야한다. 세트 타입을 명시하지 않은 대신, 세트에 속한 배열 요소를 함께 선언하는 .. [Swift] 프로토콜 지향 제네릭 프로토콜 지향 설계에서는 언제나 프로토콜로 시작한다 protocol List { associatedtype T subscript(indices: E) -> [T] where E.Iterator.Element == Int { get } func length() -> Int func get(at index: Int) -> T? mutating func add(_ item: T) mutating func delete(at index: Int) } 아래는 활용편이다 선언부, 구현부로 분리하여 네트워킹 코드를 작성할 것이다 이 글은 RxSwift를 사용한다 Usecase (선언부) import RxSwift protocol PasswordUsecase: PasswordCheckUsecase, PasswordCha.. [Swift] TextField 앞 뒤 공백 없애기 TextField에 공백을 입력하고 TextField.text.isEmpty 값을 봤더니 false가 뜬다.. 공백을 지운 textField 값을 얻고 싶다면 아래 함수를 사용하자 textField.text.trimmingCharacters(in: .whitespaces) // 공백 제거한 텍스트필드 값 여기서 더 수정한다면 guard let text = textField.text else { return } if !text.trimmingCharacters(in: .whitespaces).isEmpty { // 공백 아닌 문자열이 있을 경우 realText = text } [Swift] 테이블 뷰 -> 테이블 뷰 drag and drop 앱을 디자인해보다 처음 해보게 된 TableView1 -> TableView2 드래그 앤 드롭 테이블뷰1 에서 테이블뷰2로 옮겨보는 것이 가능한가..? 결론부터 말하자면 가능하다! 애플 문서 왈 드래그 앤 드롭 작업은 기종에 따라 가능한 역할이 나뉘는데 iPhone에서는 하나의 앱에서 수행되는 것이 가능하고 iPad에서는 위 기능에 더해 한 앱에서 다른 앱으로 이동할 수 있다고 한다 드래그 앤 드랍을 테이블 뷰에서 만들어보자 테이블 뷰에 기본적인 요구조건을 넣어준다 class TestViewContoller : UITableViewDelegate, UITableViewDataSource { tableView.delegate = self tableView.dataSource = self tableView... [Swift] 문자열 다루기 문자열 자르기 split : 특정 문자 기준으로 문자열을 잘라 배열로 만드는 함수 var string = "My Phone Number is 0" let array = string.split(separator: " ") // ["My", "Phone", "Number", "is", "0"] index(of: ) : 문자열 index를 바탕으로 주어진 길이만큼 범위를 반환 var string = "I love Sia Song" let range = string.index(string.startIndex, offsetBy: 9) string[string.startIndex...range] // "I love Sia" 문자열 특정 문자 없애기, 바꾸기 replacingOccureences(of : , with.. [Swift] Core Data 알아보기 (2) Core Data를 코드로 옮겨보자! NSManagedObjectContext 클래스를 사용해 데이터베이스를 불러보자. 이를 가져오려면 NSPersistentContainer이 필요하다. 이 파일은 이전에 AppDelegate에 코드로 선언해두었다. AppDelegate에 lazy var이 있는건 아는데 어떻게 가져오냐? 우선 공유할 수 있는 UIApplication 복사본을 가져온다. UIApplication.shared shared는 UIApplication 클래스에 있는 static var 변수다. UIApplication의 위임자 역할을 하는 delegate변수에 접근한다. (UIApplication.shared.delegate as! AppDelegate).persistentContainer P.. [Swift] Core Data 알아보기 (1) Core Data CoreData는 많은 양의 데이터 속에서 어떤 것을 찾을 때를 말한다. CoreData는 즉 SQL 데이터베이스를 말하며 객체 지향 API를 가지고 있다. 스위프트 객체처럼 보이지만 실제로는 그 스위프트 객체는 SQL 데이터베이스 안에 있는 형태다. Xcode 안에 비주얼 매퍼라는 툴을 가지고 일치시킬 수 있다. 모든 객체를 만들면 변수들을 매퍼 안에 만들어지는데 값은 자동적으로 매퍼가 일치시킨다. + 데이터베이스의 구조- 테이블의 열은 레코드를, 행은 필드를 나타낸다. 이 작업은 보이지 않는 곳에서 일어나며 프로그래밍하는 동안에는 보이지 않는다. 코어 데이터를 이해하는데 가장 중요한 것은 NSManagedObjectContext를 사용한다는 점이다. NSManagedObjectCon.. 이전 1 2 3 다음