본문 바로가기

프로그래밍/SWIFT

(22)
[Swift|번역] Process waitUntilExit 은 비동기 completion handler 와 같이 쓰지 않는다. https://stackoverflow.com/a/49541564 동기함수인 waitUntilExit() 은 비동기적 completion handler 와는 같이쓰기 어렵다. 비동기 completion handler 를 사용한다면, exit 을 기다리는 건 의미없는 일이다. --- pipe의 fileHandleForReading 을 클로져에서 사용하기 때문에 double free 에러가 발생하는 것일 수 있다. stdout 을 동기적으로 읽으라.
[Swift] SwiftyXMLParser 를 이용해 xml 트리구조 보기 Swift 의 XML 라이브러리들 중에서, SwiftyXMLParser 라는 라이브러리가 있다. 파이썬의 xmltodict 처럼, 임의의 xml 을 좀 간단하게 파싱해주는 라이브러리이다. 파싱된 xml 의 트리구조를 간단히 보고 싶었는데, 트리구조를 보여주는 예제가 없어서, 만들어 보았다. import Foundation import SwiftyXMLParser func xmlPrint(_ xml: XML.Accessor, _ nIndent: Int = 0, _ seqIndex: Int = -1) { var indent : String { String(repeating: " ", count: nIndent) } switch(xml) { case .singleElement(let element) : if ..
[Swift] error: concurrency is only available in macOS 10.15.0 or newer async, await 를 간단하게 테스트해 보기 위해서, swift package manager 프로젝트를 만들고, 아주 간단한 await, async 예제를 실행해보려 했다. swift package init --type "executable" 로 프로젝트를 만들고, main.swift 를 program.swift 로 바꾸고, 예제 코드를 입력하고, swift build 를 빌드 테스트를 했다. 우선 ubuntu swift 5.6 환경에서는 성공을 했던 코드였는데, 컴파일 에러메시지가 나왔다. /Users/mememe/07_swift_test_projects/asyncawait_pm/Sources/asyncawait_pm/program.swift:24:29: error: concurrency is o..
100DaysOfSwiftUI - Day 26 Stepper Date, Calendar Create ML : 아주 간단한 회귀모델을 만드는 튜토리얼. 코드 없이 csv파일 선택하고 타겟변수 선택하고 독립변수 선택하여 트레이닝. 선형회귀, 랜덤포레스트 등등 모델을 선택할 수 있음. 만들어진 모델은 바이너리 파일로 만들어지고 이걸 프로젝트에서 임포트하여 사용하는 듯. https://daewonyoon.tistory.com/440
Swift on Ubuntu error: cannot find 'URLRequest' in scope wsl2 + ubuntu20.02 Swift version 5.6.2 (swift-5.6.2-RELEASE) $ swift build Building for debugging... /mnt/d/nlgokr_packman/Sources/nlgokr_packman/main.swift:44:19: error: cannot find 'URLRequest' in scope let request = URLRequest(url: url) mac os 에서는 아무 문제없이 동작하는 코드였는데, ubuntu20.02 swift version 5.6 에서 빌드하였더니 다음과 같은 에러메시지가 발생했다. 문제는 ubuntu 버전의 swift 에서는 URLRequest 가 Foundation 이 아닌, 분리되어 있는 Foun..
Swift on WSL swift repl 에 진입할 때 행이 걸리는 문제. 윈도우 시스템에 wsl 을 설치하고, ubuntu 를 설치했다. (2022년 7월 15일) 여기에서 swift 연습을 해보기 위해서 swift 설치과정을 진행해서 설치가 되었는데 ( apt 명령으로 디펜던시 패키지들을 설치하고, swift ubuntu 20.04 용 릴리즈 tar 파일을 받아서 풀고, PATH 변수 설정해주기까지 ) swift 명령이 어떤 건 행이 걸려서 동작을 안했다. 1. swift 명령만 실행하여 repl 에 들어가려 하면 멈춘다. $ swift Swift version 5.6.2 (swift-5.6.2-RELEASE) Target: x86_64-unknown-linux-gnu Welcome to Swift! Subcommands: swift build Build Swift pack..
XCode 프로젝트에 써드파티 패키지 추가하기 처음하다 보니까 라이브러리 가져다가 쓰는 것도 어려웠다. 라이브러리의 소개페이지에 설치해서 사용하는 방법들이 너무 여러가지를 기준으로 설명이 되어 있었다. swift package manager, cocoapods, carthage... 모두 커맨드라인에서 어떻게 하는 방법인데, 나는 xcode 프로젝트에 포함해서 쓰고 싶었다. 프로젝트 설정 쪽에 package 관리하는 곳이 있었고, package 추가하면 창이 뜨고 쭉 하면 되더라. 간단한 건데, 혹시 나처럼 헤맬 사람들을 위해 캡쳐화면을 떠서 포스팅을 작성한다. xcode 13 이다.
Swift XMLCoder swift 로 xml 을 파싱하는 예제를 검색했을 때 (한국어검색결과에서) 가장 많이 나왔던 것은 XMLParser, XMLParserDelegate 을 사용하는 예제였다. 시작태그, 끝태그, 바디 각각을 처리하는 3개의 parser 를 구현해야 하는 것인데, 너무 리던던트한 코드가 많고, 구현도 복잡했다. 그러다가, json 은 이미 Codable, Decodable 프로토콜을 이용하여 간단하게 파싱하는 방법을 제공( JSONDecoder )하고 있다는 걸 알았다. 그래서, swift xml parser codable protocol 같은 검색어로 검색해 봤더니 XMLCoder 라는 써드파티 라이브러리가 존재한다는 걸 알았고, 써봤다. 일단 아주 잘 정의된 xml 에 예제만 해 봤는데, 너무 좋은 것 ..