WooKoo Blog

물과 같이

swift 59

[iOS] - XML Parse사용법

기본적으로 코코아 터치 프레임워크에서 제공하는 XMLParseDelegate를 사용했다. XMLParseDelegate를 클래스에 채택해주고 클래스를 하나 만들어준다. var currentElement = "" class CheckStation{ var checkS:String? } var checkArray: Array = [] var checkStation:CheckStation? 여기서 currentElement는 parse 함수에서 사용될 건데 태그들이 들어갈 변수이다. 클래스를 만들어주고 배열을 하나 만들어주자. 왜냐하면 같은 태그의 데이터가 여러개 일 수 있다. // XML 파서가 시작 테그를 만나면 호출됨 func parser(_ parser: XMLParser, didStartElement..

개발/개발 2020.06.05

[iOS] - 위치정보(위도 경도 획득하기)

제일 먼저 info.plist에서 위와같은 칼럼을 추가해준다. Privacy - Location When In Use Usage Description - 앱이 사용중일때만 가져오기 Privacy - Location Always and When In Use Usage Description - 앱을 사용안해도 항상 가져오기 이니까 필요에 따라 수정한다. 그 후 // // ViewController.swift // GonZee // // Created by 1 on 2020/05/31. // Copyright © 2020 wook. All rights reserved. // import UIKit import CoreLocation class ViewController: UIViewController, CLL..

개발/개발 2020.05.31

[Swift] - Generic(제네릭)

Generic 사전적 뜻은 포괄적인, 총칭의 Int a와 Int b 의 값을 바꿔주는 함수가 있다고하자. 만약 a, b의 값이 double이라면? 새로 함수를 만들어야한다. String 타입이라면? 또 함수를 만들어줘야한다. a와 b의 타입에 따라서 함수 파타미터 타입을 결정해줄 때 사용한다. 함수가 호출 될 때 타입이 결정된다는 뜻!! 예시 func swapTwoValue(_ a: inout T, _ b: inout T){ let temporaryA = a a = b b = temporaryA } 파라미터의 T는 타입 파라미터라고 부르고 함수 이름 옆 는 Placeholder 타입 이름이다. 가 지금은 하나지만 여러개를 쓸 수 있다. ","로 구분하면 된다. 만약 특정 제약을 주고싶다면 , 과 같이 타..

개발/개발 2020.05.28

[iOS] - GCD란???

iOS에서는 쉽고 편한 멀티 스레딩 처리를 위해 두가지 API를 제공합니다. 1. GCD(Grand Central Dispatch)라는 C기반의 저수준 API 2. NSOperation이라는 Obj-C 기반의 고수준 API 2번은 1보다 약간의 오버헤드가 더 발생하고 느리다. GCD를 사용하기전에 알아야할 클래스 DispatchQueue이다. 실제로 해야할 Task를 담아두면 선택된 스레드에서 실행해준다. DispatchQueue는 2가지로 나뉜다. 1. Serial Dispatch Queue - 등록된 작업을 한번에 하나씩 차례대로 처리합니다. 처리중인 작업이 완료되면 다음 작업을 처리합니다. 2. Concurrent DisPatch Queue - 등록된 작업을 한번에 하나씩 처리하지 않고 여러 작업들..

개발/개발 2020.05.27

[iOS] - 코코아 터치 프레임워크란?

코코아라는 단어는 NSObject를 상속받는 모든 클래스, 모든 객체를 가리킬 때 사용한다. 왜 코코아냐면 자바가 커피원산지에서 따온 이름이라서 애플 개발자는 어린이도 할 수 있는 의미에서 코코아라고한다. 여담이었고 코코아 터치 프레임워크란 iOS 개발 환경을 구축하기 위한 최상위 프레임워크다. 이름이 비슷한 코코아 프레임워크는 macOS 개발을 위한 프레임워크이며 아이폰, 아이패드의 터치 기반의 iOS개발 환경에 사용하여 코코아 터치 프레임워크라고 이름이 붙었다. UIKit만 import 했음에도 Foundation 을 사용할 수 있는 이유는?? 기본적인 코코아 프레임워크는 아래와 같은 계층 구조를 갖는다. 하위 계층일수록 하드웨어에 가깝고, 상위 계층일수록 사용자에게 가깝다. 그중 UIKit은 가장 ..

개발/개발 2020.05.27

[iOS] - Foundation Kit이란?

Foundation 프레임워크란 코코아 터치 프레임 워크에 포함된 프레임워크다! 코코아 터치 프레임워크는 애플에서 제공하는 기본 프레임워크 Foundation은 원시 데이터 타입(String, Int, Double), 컬렉션 타입(Array, Dictionary, Set) 및 운영체제 서비스를 사용해 애플리케이션의 기본적인 기능을 관리한다. - Foundation에는 데이터 타입, 날짜 및 시간, 필터 및 정렬, 네트워킹 등의 기본 기능을 제공한다. -Foundation 프레임워크에서 정의한 클래스, 프로토콜 및 데이터 타입은 iOD, MacOS, tvOS 등 모든 애플의 SDK에서 쓰인다. 기능들 기본 - Number : Data, String : 원시 데이터 타입 사용 - Collection : Ar..

개발/개발 2020.05.27

[iOS] - 강한참조 약한 참조(Strong capture and weak capture)

Hacking with swift 를 진행하다가 나온 내용이라 부족함을 느껴 따로 공부해보는 시간을 갖겠다. 먼저 Swift ARC(Auto Reference Counting) 이라고해서 컴파일 시점에서 다시 사용할 메모리 소스들을 자동으로 삽입해준다. 가비지 컬렉터와 달리 참조 사이클을 자동으로 처리해주지 않기 때문에 메모리 누수가 발생 할 수도 있다. 서로 다른 객체가 서로를 참조하면 순환 참조가 계속되 메모리가 해제되지않고 메모리 누수가 발생한다. 이것을 해결하기 위한 것이 weak 과 unowned이 있다. 이 차이점은 weak키워드는 optional에 사용할 수 있으며, unowned는 non-optional인 경우에만 사용 가능합니다. 따라서 unowned는 옵셔널 추출이 필요하지 않지만, 참..

개발/개발 2020.05.08

[iOS] - 뷰컨트롤러 간 값 전달/직접전달방식(동기방식)

뷰 컨트롤러 간 데이터를 공유하는 방식에 대해서 알아보자. 크게 두가지 방식이 있는데 미리 만들어둔 변수를 이용하여 직접 값을 전달하는 1. 직접 전달 방식(동기방식) 공유소나 저장소에 저장하여 필요할 때 꺼내오고 저장하는 2. 간접 전달 방식(비동기 방식) 이 있다. 1의 방법의 경우 받는 뷰 컨트롤러에서 받아야할 데이터들의 명세를 미리 정의해주어야하고 2의 방법의 경우 저장소 위치를 공유하고 있어야한다. 오늘은 1번의 방법을 통해서 데이터를 주고 받는 과정을 알아볼 것이다. 먼저 사진과 같이 1VC를 만들어 준다. 위에서 부터 텍스트 필드, 스위치, 스테퍼, 버튼이다. 이후 2VC도 만들어주며 버튼을 제외한 나머지는 다 Label들이며 화면 전환 시 데이터들에 따라 값이 변경 될 예정이다. 먼저 1...

개발/개발 2020.01.10

[iOS] - SQLite3 기존 DB 사용하기

으아아아아악! 나는 영어 사전 어플을 만들기 위해서 영어 사전이라는 DB를 어플리케이션을 동작할 때 넣어줘야했다. 결론적으로는 해결을 했다. 해당 시뮬레이션 기기마다 경로가 달라서 DB파일을 어떻게 넣어줘야하는지 몰랐는데 만들어둔 DB를 시뮬레이터가 돌아갈 때 새로운 DB를 만들어 Copy해주는 방법을 사용해야했다. 어떻게 하는지 알아보자. 먼저 제작한 데이터 베이스를 프로젝트 폴더 안에 넣어주자. 이런 식! 그 후에는 https://github.com/stephencelis/SQLite.swift stephencelis/SQLite.swift A type-safe, Swift-language layer over SQLite3. Contribute to stephencelis/SQLite.swift de..

개발/개발 2019.12.01