switch문이라면 break, 그냥 이렇게 쓸 수도 있다. {}()
import UIKit print(Int.random(in: 1...10000))
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/F8jM1/btqzlkystLZ/kI5K0Bxc4mOELzeB0ny5C0/img.png)
This is what's called a "variadic parameter." It means that the function can take more than one value of that type. The function's block will have access to an array-like structure (I can't remember if it's an actual array or not), which can be iterated on and used to perform some work on all of the members in it. So in the example you posted, that function can take a variable number of Ints, pa..
https://medium.com/@codenamehong/swift-underscore-90dcbec5072f Swift underscore(_) 함수에서의 _ (underscore) medium.com Swift는 함수의 argument 앞에 특정 라벨을 붙일 것을 요구합니다. argument의 이름을 붙인다고 생각하면 쉬울 것 같습니다. 다만, 따로 라벨을 쓰지 않으면 default값으로 함수 선언시 사용한 argument를 라벨로 사용합니다. 그렇다면 두 번째 함수 호출은 어떻게 된 것일까요? 먼저 name: 부분은 argument 작성시 name person: String 부분에서 따로 라벨을 설정해준 것을 확인할 수 있습니다. 자 그 다음은 _ 입니다. 보이시나요? greet 함수 호출시 파라..
## defer 블록 특징 1. 함수 종료 직전에 실행 2. defer 블록이 읽히기 전에 종료 되면 실행 되지 않음. 3. 가장 마지막에 호출된 defer 블록 부터 역순으로 호출 된다. 4. defer블록을 중첩으로 사용할 때, 바깥쪽 블록 부터 호출 된다. https://gogorchg.tistory.com/entry/iOS-Swift-defer-블록 [iOS] Swift defer 블록 defer 블록 : 메소드 에서 코드의 흐름과 상관 없이 가장 마지막에 실행되는 블록 SQLite3를 사용할 때 참고 하면 좋을 듯 하다. func dbExecute(dbPath: String) { // 1 var db: OpaquePointer? = nil guard sqli.. gogorchg.tistory.c..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/W3fzG/btqzexiI8TE/IHGbAKmH5kaMV332XySOSK/img.png)
https://www.youtube.com/watch?v=YRNFEb3lYFk 영상 덕분에 switch랑 enum에 대해서 한번 더 생각해보게 됐다. c언어 할 때부터 enum을 안쓰다싶이 했더니, 아예 enum이랑 멀어진것같다. 하지만 enum은 꼭 필요한 존재인걸.... 그리고 swift의 enum은 너어어어무 헷깔린다. enum 종류를 왜 case로 표현할까? switch문도 case이면서 ㅂㄷㅂㄷ 정말 마음에 안드는 예약어다 ㅠ 아무튼 본론은 NSPredicate(format: “SELF MATCHES %@”, “[0-9]{2,2}”).evaluate(with: self) 이런 정규표현식으로 내가 원하는 값이 들어왔는지 확인할 수 있다는 내용이었다. 이메일은 “[A-Z0-9a-z._%+-]+@[A..
c언어 할 때부터 enum을 안쓰다싶이 했더니, 아예 enum이랑 멀어진것같다. 하지만 enum은 꼭 필요한 존재인걸.... 그리고 swift의 enum은 너어어어무 헷깔린다. enum 종류를 왜 case로 표현할까...정말 마음에 안든다ㅠㅠ 1. 정의 enum Weather{ case sunny case rainy } 뭐 이런식으로 쓰면 된다. enum Weather { case sunny, rainy } 이렇게 한줄로 정의해도 된다고 한다!!! 2. enum을 활용한 switch문 switch문은 if else의 대행같은거라고 생각하면 될듯. switch weather{ case .sunny case .rainy default } 이렇게 쓰면 된다. 3. enum에 함수 넣기 " 열거 타입은 Swif..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bc1KdS/btqCF7BGn4u/dpvjyGEd4lljYy1HgLucI0/img.png)
https://stackoverflow.com/questions/46074718/how-to-compare-two-struct-objects How to compare two Struct objects? I have two objects for the same struct class having different values. I need to compare these two objects whether they are equal or not. Please guide me through a proper solution. struct CustomerI... stackoverflow.com 1. struct를 ==으로 비교할 수 있을까? 2. struct 내 값들이 모두 동일하다면, ==으로 비교한 값이 t..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/KWT3z/btqy7Lo29yD/Zxn1gQ9WXzRakKfe2DNR6K/img.png)
C의 for문에는 i가 있었다. Swift에서는 배열을 도는데, index를 알고 싶다면 어떻게 해야할까?? firstIndex같은거 들고 삽질하고 있었는데ㅠㅠ 정답은 enumerate!!! 배열.enumerate()과 같은 형태로 쓰면 된다. sequence가 리턴 되는데...! 요런 식으로 쓸 수 있다. for (index, element) in list.enumerated() { print("Item \(index): \(element)") } forEach를 섞어 쓰고 싶고, $0을 이용해서 축약도 하고 싶다면? 이렇게 쓰면 된다. 더 짧게 쓰려면 다음과 같이도 가능하다. list.enumerated().forEach { print("index: \($0.0), value: \($0.1)") } ..
https://stackoverflow.com/questions/44487333/make-uicollectionview-scrollable-when-not-full Make uiCollectionView scrollable when not full I want my CollectionView to still be able to scroll a bit up and down when there’s only a few cells (to get that bounce effect). In a previous question it was suggested that using self.collection... stackoverflow.com
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/c0cY9x/btqy9qxuEoZ/LZtKc9k77LNJCSFkeEd9J1/img.png)
for을 쓸까 foreach를 쓸까는 항상 고민되는 이슈이다. 주변에 좀 물어봤는데 for이 속도가 더 빠르고, 중간에 break도 되고, 아무튼(?) 더 좋았다. forEach는 클로저를 넣을 수 있는게 장점인 것 같다. ==== 고차함수들을 잘 써야 좋은 프로그래머라고 생각한다. 특히 함수형을 잘 살려야 좋은 swift 개발자라고 나는 생각한다. 나는 그동안은 filter라는 함수에 관심이 별로 없었다. 쓸일이 없었다. 근데, 이런 함수를 만들려고 하는데...!!!! 이 함수는 리스트 안에, isSelected된 버튼이 있으면, 그 버튼을 리턴해주는 함수이다. 내 의도와는 달리, forEach 안에서 리턴 되어버리는 원하지 않는 결과가 탄생했다... 클로저라서,,,, 이럴때 쓰는게 filter이다. ..
lazy var readerVC: QRCodeReaderViewController = { let builder = QRCodeReaderViewControllerBuilder { // 무언가 처리를 해줌 } let vc = QRCodeReaderViewController(builder: builder) vc.completionBlock = { [weak self] (result: QRCodeReaderResult?) in // 무언가 처리를 해줌 return } return vc }() completionBlock 안의 return은 블록에 대한 리턴 return vc는 QRCodeReadViewController타입의 객체에 대한 리턴 ()는 선언과 동시에 생성까지!
놀랍게도! iOS13에서 업데이트된 modal 형태(뒤에 조금 보임)은 viewWillAppear가 동작하지 않았다. 아마 뷰가 뒤에 깔려있고, 바로 보여서 그런가보다. fullScreen 형태이면 viewWillAppear가 call된다고 하던데, 나는 그냥 그 닫힐 뷰에서 viewWillAppear을 콜해줬다. 그리고 navigationController를 직접 안넣어주면 pop을 못하고 modal처럼 동작한다는것도 배웠다
널과 닐의 차이...항상 궁금했었다! 스위프트를 처음 배울때도 가장 낯설었던 키워드가 nil이었다. 나는 C만 해봐서, null밖에 몰랐었다. 결론적으로 말하면, swift에서는 'null' 대신 'nil'을 사용한다. 이는 objective-c라는 언어의 잔재인데, objective-c에서는 클래스 객체와 다른 포인터 자료형을 참조할 때 각각 다른 빈 포인터값을 사용했지만, swift에서는 아예 유저가 포인터를 통해 객체를 접근하는것을 막음으로서 null은 필요 없어졌다. [오브젝티브 씨 에서] nil : 클래스 객체를 참조하는데 사용 null: 그 밖의 다른 포인터 자료형 [스위프트에서] Null이라는 값이 없음. 오직 nil뿐 이해가 잘 안간다면 그냥 스위프트에서는 null이 nil이구나~ 하고 넘..
@IBAction func didTapShareButton(_ sender: Any) { // todo: UIActivityViewController 이용해서 공유하는 기능 만들기. let text = "내가 공유할 텍스트⭐️" let textToShare = [text] let activityViewController = UIActivityViewController(activityItems: textToShare, applicationActivities: nil) activityViewController.popoverPresentationController?.sourceView = self.view self.present(activityViewController, animated: true, compl..
링크가 주어질 때, 사진을 받아오는건 꽤 까다로운 일이다. 이때 쓰는 라이브러리가 KingFisher이다!! 한줄로 이미지를 받아오게 하는 자네..최고... cell.storeImageView.kf.setImage(with: url, placeholder: UIImage(named: "imageMap")) 이런식으로 한줄만에 해줄 수 있다고 한다 원래는 이렇게 했었음 ㅠㅠ func getImageFromWeb(_ urlString: String, closure: @escaping (UIImage?) -> ()) { guard let url = URL(string: urlString) else { return closure(nil) } let task = URLSession(configuration: .d..
스토리보드에서 커스텀뷰를 형태 그대로 보고 싶을 때, @IBDesignable, @IBInsepctable 어노테이션을 사용하면 된다!! 1. @IBDesignable @IBDesignable public class MyButton: UIButton { 이런식으로 쓰면 된당 2. @IBInspectable @IBInspectable을 값 앞에 붙이면, storyboard에 출력해서 할당할 수 있게 된다! https://gogorchg.tistory.com/entry/iOS-IBDesignable-IBInspectable-활용
그저 충격... 벌써 1년 다 되게 iOS 공부하는데 아직도 모르는게 너무 많다ㅠㅠ http://minsone.github.io/mac/ios/preview-storyboard-or-xib-in-xcode [Xcode]Storyboard 또는 Xib 미리보기 어제 Adaptive Layout을 보면서 3.5-inch, 4-inch, 4.7-inch, 5.5-inch를 대응하는 부분을 설명해주는데 Xcode에서 각각의 단말마다의 크기에 따른 화면을 preview로 보여주는 것을 보고 이런 것이 있었구나라고 알았습니다. 딱히 현업분들은 놀랄 것은 아니긴 하지만 저에겐 공백기 동안에 못해봤던 것을 이제 해보고 있으니까요. Preview Xcode에서 Storyboard나 Xib 화면에서 각기 다른 화면 크기에..
1. someTextField.resignFirstResponder() resignFirstResponder() is good to use any time you know exactly which text field is the first responder and you want to resign its first responder status. This can be slightly more efficient then the alternative, but if you're doing something such as creating a custom control, this can make plenty of sense. Perhaps you have a text field, and when the "Next..
override func viewWillAppear(_ animated: Bool) { // footer 추가해서 empty table view cell들 보이지 않게 하기 faqTableView.tableFooterView = UIView.init(frame: .zero) } UIKit은 원래, 테이블 뷰에 table Footer View가 있으면 빈 셀들을 생성하지 않는다고 한다. 그래서 우리는 높이 0짜리 view를 만들어서, footer로 쓰게 한다.