열거형은 하나의 타입으로 정의해서 캡슐화함으로써 안전하고 간결한 코드를 작성하는 목적으로 사용됩니다. swift에서의 열거형은 자료형과 원시값을 설정할 수 있고, 연산 프로퍼티 및 메소드도 정의할 수 있습니다. 또한 초기화 메소드를 정의할 수 있고, 프로토콜로 인한 기능 상속도 가능합니다. 다만 위에서도 말했듯이 연산 프로퍼티만 정의할 수 있고, 저장 프로퍼티는 정의할 수 없습니다. 저장 공간은 데이터를 연동한 각각의 case에만 있습니다. 이 부분은 아래에서 알아볼 것입니다. 참고로 enum도 value type이기 때문에 전달할 때 값이 복사됩니다. 아래는 열거형의 기본 형식입니다. enum CompassPoint { case north case south case east case west } 쉼표..
정수값을 특정 문자로 구분하여 그룹을 만드려면 NumberFormatter를 사용해야 한다.일반적으로 많이 사용되는 정수값에 원화의 구분자 넣어주는 작업을 예로 들어 코드를 작성해 보았다. extension Formatter { static let withSeparator: NumberFormatter = { let formatter = NumberFormatter() formatter.groupingSeparator = "," formatter.numberStyle = .decimal return formatter }() } 생성한 NumberFormatter에 groupingSeparator를 설정하여 grouping하는 구분기호를 설정해주고, numberStyle에는 십진수를 뜻하는 .decimal..
일반적으로 notification을 등록할 때 notificationName을 만들어 사용하는 경우가 많았다.NSNotificationName에는 이미 구현되있어 신기하고 편하게 가져다 쓰면 유용한 것들이 있었다.그 중에 스크린샷을 찍었을 때 사용되는 notificationName이 있어서 간단히 사용해 보았다. class ViewController: UIViewController { required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) registerForNotifications() } deinit { NotificationCenter.default.removeObserver(self) } private func registerFo..
urlencoded 방식으로 request 요청을 하는 코드를 작성하면서 간단히 정리하는 시간을 가져보았다. 보통 데이터를 매핑할 때 key/value를 사용하는 dictionary 타입을 사용한다. urlrecoded 방식으로 데이터를 보내기 위해서는 string 형태로 변환하는 작업이 필요하다.아래는 그 작업을 flatMap와 join 메서드를 사용하여 코드를 작성해보았다. let urlString = "요청 url" let url = URL(string: urlString) var urlRequest = URLRequest(url: url!) let formData: [String : Any] = ["title": "....", "desc": "..."] // key/value 형태의 데이터를 st..
collectionView에 간단히 paging을 설정할 수 있는 프로퍼티가 있다. collectionView.isPagingEnabled = true 위 코드와 같이 간단히 가능하다. 하지만 이 코드로는 상하좌우에 여백이 생기면 스크롤 시 어그러지는 현상이 발생된다. 난 아래와 같은 페이징 효과를 원했다!!! 그래서 검색을 통해 코드를 보고 내가 원하는대로 만들어 보았다. 아래는 collectionView에 대한 초기 설정이다. class ViewController: UIViewController { @IBOutlet weak var collectionView: UICollectionView! let itemColors = [UIColor.red, UIColor.yellow, UIColor.blue, ..
// html code // javascript code jQuery.each(jQuery('textarea[data-autoresize]'), function() { var offset = this.offsetHeight - this.clientHeight; var resizeTextarea = function(el) { jQuery(el).css('height', 'auto').css('height', el.scrollHeight + offset); }; jQuery(this).on('keyup input', function() { resizeTextarea(this); }).removeAttr('data-autoresize'); }); // css code textarea { box-sizing: ..
한글이 포함되어 있는 urlString으로 URL 컨버팅을 해줄 경우, nil 값이 반환되었다.이럴때 characterSet을 지정해주면 간단히 해결된다. let urlString = "https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=1&ie=utf8&query=애플" let encodedString = urlString.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)! let url = URL(string: encodedString)! 위 예시의 urlString에서는 쿼리 부분에 한글이 있으므로, urlQueryAllowed 타입으로 인코딩 해주었다.원하는 타입은 ..
viewController에서 스크롤 할 때, 특정 위치에서 statusBar의 스타일과 backgroundColor를 변경하고 싶었다.아래 코드와 같이 처음 로딩할 때는 쉽게 변경 가능했다. override func viewDidLoad() { super.viewDidLoad() UIApplication.shared.statusBarView?.backgroundColor = UIColor.clear } // statusBar content style 변경 override var preferredStatusBarStyle: UIStatusBarStyle { return .lightContent } 그 후 스크롤 시 특정 위치에 도달하면 다시 statusBar 스타일을 변경하고 싶었다.구글형님에게 물어본 ..
화면의 구조를 생각하다보면 collectionViewCell의 내부에 collectionView를 구현하는 경우가 생긴다. 이럴때 발생한 삽질에 대해 끄적거려보려고 한다. // collectionView 클래스 func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! Cell cell.data = dataList[indexPath.row] // cell에 데이터 넘겨주는 코드... re..
var date = new Date(); var options = { year: "numeric" , month: "short" , day: "numeric" , weekday: "long" , hour: "2-digit" , minute: "2-digit" }; date.toLocaleDateString("ko-kr"); date.toLocaleDateString("ko-kr", options); date.toLocaleDateString("en-us", options); // output // "2018. 6. 20." // "2018년 6월 20일 수요일 오후 12:36" // "Wednesday, Jun 20, 2018, 12:36 PM" 참고자료
- Total
- Today
- Yesterday
- Coordinator
- http live streaming
- m3u8
- HLS
- testing
- BaseViewController
- database
- AVFoundation
- xib
- AVKit
- UIControl
- Realm
- customAlertView
- NIB
- TDD
- CollectionView
- Design Pattern
- Cleancode
- Video
- ssh
- IOS
- UIBarButtonItem
- permission error
- pagingView
- Swift
- UIButton
- carousel
- RECORDING
- AssociatedObject
- Closure
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |