# swift 스타일 맞추기 ## google swift 문서 참조하기 https://google.github.io/swift/ 이 문서에 있는 것을 표준으로 사용한다 ## SwiftFormat extension 사용하기 https://github.com/nicklockwood/SwiftFormat 1. 프로젝트를 클론받는다 ( Download ZIP ) 2. 폴더 안에서 EditorExtension > SwiftFormat for Xcode.app을 응용 프로그램 폴더로 옮긴다 3. 시스템 환경설정 > 확장 프로그램 > 모두 에서 SwiftFormat for Xcode를 체크해준다. 4. SwiftFormat 응용프로그램을 열어서, Infer Options Automatically를 체크 해제하고, i..
import UIKit import QRCodeReader import AVFoundation import WebKit import SideMenu class HomeViewController: UIViewController, WKNavigationDelegate, WKUIDelegate { @IBOutlet weak var webView: WKWebView! var popupWebView: WKWebView? @IBAction func didTapSideBarButton(_ sender: Any) { } func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration, for navigationAction..
정말정말 특이한 함수들이 많다 ‼️‼️‼️‼️
segementControl.selectedIndex == 0... 이런식으로 쓰면됨
터미널에 echo ""
후 내 4시간 돌려줘요... " Because the ? isn't part of a path. It's a separator to signal the beginning of the query string. You can read about the different components of a URL in this article. Each component has its set of valid characters, anything not in that set needs to be percent-escaped. The best option is to use URLComponentswhich handles the escaping automatically for you: " var urlComponents =..
print(response.request)
let uuid = UUID().uuidString
https://medium.com/@jang.wangsu/ios-swift-fcm-firebase-cloud-messaging-push-메시지-설정해보기-852a9af23b96 [iOS Swift] FCM(Firebase Cloud Messaging), Push 메시지 설정해보기 파이어베이스 클라우드 메시징을 이용해서 푸시를 보내는 방법은 알고는 있지만, 제가 직접 해본 적은 없었네요.. medium.com https://faith-developer.tistory.com/156 FCM Notification 구현해보자 iOS에서 GCM으로 푸시 하는 방법에 이어서 FCM으로 Notification 구현해 보겠습니다. 먼저는 FCM 이 무엇인지 알아야겠지요? FCM 은 Firebase Cloud Messa..
https://github.com/navermaps/ios-map-sdk/issues/1 Error NMapsMap 3.3.0 · Issue #1 · navermaps/ios-map-sdk SDK를 3.3.0으로 업데이트한 이후로 에러가 발생 합니다. 비트코드를 적용하셨다는 이슈에 답변을 보고 제 앱 타겟에 비트코드를 적용해도 똑같은 에러가 발생 합니다. 개발자 커뮤니티에서도 동일한 에러가 발생한다는 분이 계셨습니다. 현재는 pod에서 강제로 3.2.1버전으로 다운그레이드하여 사용 중 입니다. github.com 왜 안될까 한참 헤맸다 더구나 같은 프로젝트를 클론해서 pod install 했는데, 어떤 사람은 되고 어떤 사람은 안되서 더욱더 혼란스러웟다!! 안된 이유는 git-lfs 설정을 안했기 때문이..
_ = publisher.assign(to: \.value, on: object) 이런식으로 쓰던데.... \.value는 처음 보는 문법이었다. \.은 무슨 의미일까? https://docs.swift.org/swift-book/ReferenceManual/Expressions.html#grammar_key-path-expression Expressions — The Swift Programming Language (Swift 5.1) Expressions In Swift, there are four kinds of expressions: prefix expressions, binary expressions, primary expressions, and postfix expressions. Evalua..
클로저에 대해서는 잘 알고 있다. 그럼 탈출 클로저는 무엇일까? 아무도 몰랐겠지만, @noescape을 명시적으로 써주지 않았어도, 디폴트 설정은 @noescape였다. 함수의 인자로 쓰이는 클로저는, 여느 함수 인자들처럼 함수 안에서만 접근이 가능했다. 하지만 @escaping을 써주게 된다면?!?!!? 함수의 외부에서도 클로저에 대해 접근할 수 있어진다. var completionHandlers: [()->Void] = [] func someFunction(closure: @escaping ()-> Void ) { completionHandlers.append(closure) } 결론: escaping 클로저는 변수로 받은 클로저를 다른 변수에 저장해놓고, 나중에 콜 할 수 있다는 점에서 의의가 있다..
https://gogorchg.tistory.com/entry/iOS-Archives-보기 [iOS] Archives 보기 archive 시켰던(iTunes connect에 업로드를 시키기 위해) 목록을 볼려면 어디로 가면 될까요? XCode 상단 메뉴중 Window -> Organizer (3번째 탭)를 눌러 주세요~ 그럼 상단에 Archives 탭이 있는 창이 뜰 겁니다... gogorchg.tistory.com window > organizer
//This is for the keyboard to GO AWAYY !! when user clicks anywhere on the view override func touchesBegan(touches: Set, withEvent event: UIEvent?) { self.view.endEditing(true) } //This is for the keyboard to GO AWAYY !! when user clicks "Return" key on the keyboard func textFieldShouldReturn(textField: UITextField) -> Bool { textField.resignFirstResponder() return true }
스위프트도 아니고 옵젝씨... 그건 이해할 수 있는데 예제도 옵젝씨... 브릿지 헤더도 지원 안함,.. 카카오에서 만든 다른 라이브러리들은 옵젝씨로 만들었어도 브릿지헤더 만들어둬서 스위프트로 쓸 수 있는데 왜 지도는 왜... 어쩐지 사람들이 다 네이버지도만 쓰더라 왠지 알아버렸다 ㅂㄷㅂㄷ https://yangfra.tistory.com/25 Swift4.2, Xcode 10.1 IOS 12.1로 Daum 지도 API 사용하기! 안녕하세요 양군 입니다 :) 오늘은 IOS 12.1(2018.11 현재 최신 버전) 그리고 다음지도 API를 사용하는 방법을 알아 볼게요! 초보 개발자 분들에게 도움이 되시길 바라며, 이 포스팅을 작성 하겠습니다 이 글을 작.. yangfra.tistory.com 여기에 브릿지 ..
@IBDesignable class SeparatorButtons: UIView { let nibName = "SeparatorButtons" var contentView: UIView? override init(frame: CGRect) { super.init(frame: frame) loadViewFromNib() } required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) loadViewFromNib() } override func prepareForInterfaceBuilder() { super.prepareForInterfaceBuilder() loadViewFromNib() } func loadViewFromNib() { le..
인용출처: https://soooprmx.com/archives/7230 이 init(coder:)는 NSCoding이라는 프로토콜에 정의되어 있다. 이 프로토콜은 표준 키 기반 아카이브를 통해서 직렬화가능한 클래스에 적용되는데, UI를 구성할 수 있는, 그러니까 nib 파일에 들어갈 수 있는 모든 클래스는 이 프로토콜을 따르고 있다. 그런데 이때 요 이니셜라이저는 convenience가 붙지 않은, 지정 이니셜라이저이다. 그리고 또 한가지, Swift는 기본적으로 서브클래스가 수퍼클래스의 이니셜라이저들을 상속받지 않은 것을 원칙으로 하고 특별한 경우에 자동 상속을 허용한다. 이니셜라이저의 자동상속은 다음의 조건을 만족해야 한다. 1. 만약 자식 클래스에서 추가된 저장 프로퍼티가 모두 디폴트 값을 가지고..
https://littleshark.tistory.com/12 Loaded nib but the view outlet was not set 오류 해결법 1. files owner와 제대로 연결되었는지 확인할 것 (이름 확인!!) 2. view를 연결시켜줄것!! You guys are right, but as I'm a newcomer it took me a little while to figure out all the steps to do that. Here.. littleshark.tistory.com xib 귀찮아..
이런식으로 !! command + shift + L
https://stackoverflow.com/questions/24036514/correct-way-to-find-max-in-an-array-in-swift Correct way to find max in an Array in Swift I've so far got a simple (but potentially expensive) way: var myMax = sort(myArray,>)[0] And how I was taught to do it at school: var myMax = 0 for i in 0..myArray.count { if (myArray[i] ... stackoverflow.com numbers.max()가 된다. 스위프트 갓갓 ^^77 data.values.max() 딕셔너리..
var emptyDict = [String: String]() var emptyDict = Dictionary() var emptyDict: [String: String] = [:] var emptyDict: [String: String] = [String: String]() var emptyDict: [String: String] = Dictionary() var emptyDict: Dictionary = [String: String]() var emptyDict: Dictionary = Dictionary() var emptyDict: Dictionary = [:] var emptyDict: Dictionary = [String: String]() var emptyDict: Dictionary = D..