반응형

Software/Swift 6

Swift 에서 C의 매개변수로 값 넘기기

예전부터 TCP/IP를 C언어로 개발하다 보니 아직은 Swift가 어색하다. 그래서 SwiftUI의 프로젝트에서 브리지를 사용하여 C언어로 개발 된 함수를 불러 오기로 했다. 함수를 그냥 부르는 것 까지는 아무 문제 없이 되었는데, 다음과 같은 문제가 있었다. Swift 파일 안에 [let s = "Hello!!"] 가 있다고 하자, 변수 s 를 최종적으로 [void clientMain(char *inform)]에 넘기고 싶다. 따라서 "s" 를 "inform"으로 넘겨 줄 경우에 형 변환을 해야 된다. 어설프게 나마 다음과 같이 변환을 하였는데, var dataname: [CChar] = inform.cString(using: String.Encoding.utf8)! clientMain(&datanam..

Software/Swift 2021.02.26

Swift 브릿지 헤더 (Objective-C Bridging Header) 제거하기

프로그래밍을 하다가 브리지 헤더를 그냥 지워 버렸더니 아래와 같이 에러 메시지가 나면서 빌드가 안된다. Error opening input file '/Users/*****/Desktop/***********/***********/Classes/Objective-C/TCP/***********-Bridging-Header.h' (No such file or directory) 어떻게 되돌리는 방법이 없나 찾아보니까, 프로젝트 파일의 "Build Settings"에 가서 "Swift Compiler - General" 항목에 "Objective-C Bridging Header"에 가보니까 아까 지웠던 브리지 파일의 설정이 남아 있었다. 오른쪽의 "Objective-C Bridging Header" 부분의 ..

Software/Swift 2021.02.25

Swift UI 프로그래밍: 버튼 설정

Swift UI에서의 버튼의 설정은 아래와 같다. Button(action: { //버튼이 눌리게 되면 실행될 것 print("버튼이 눌려 졌다.") }) { Text("버튼 이름을 적는다.") } 버튼에 이미지를 넣고 싶은 경우는 아래와 같이 한다. Button(action: { //버튼이 눌리게 되면 실행될 것 print("버튼이 눌려졌다.") }) { Image("그림 파일 이름") //여기서 사용될 그림파일은 [Assets.xcassets]에 미리 복사 해 놓는다. .resizable() .scaledToFit() .frame(width: 100.0, height: 200.0) } .buttonStyle(PlainButtonStyle()) //버튼이 그냥 파란색으로 보이고 이미지가 보이지 않을 경..

Software/Swift 2021.02.25

C언어와 Swift를 이용한 TCP-IP 에서 발생한 문제

C언어로 다 짤때는 atoi로 int형 변환을 하든가 아니면 배열로 받아지니까 배열 범위를 지정해서 strcpy 같은 걸로 문자열 복사를 해서 데이터를 다루곤 했는데, Swift는 String[Int}로 문자 접근 자체가 안되는거 같더라. 따라서, 맥에서는 C언어로 짠 서버를 굴리고, 아이폰에서 클라이언트를 생성하여 데이터를 recv해서, 그 결과를 이용하여서 for문을 생성할려고 했는데 생각한 데로 잘 안된다. 처음부터 C언어로 개념이 잡혔었던 나에게 혼란이 와서 어떻게 하면 좋을까 자료를 많이 찾아봤다. 단순하게 Int() 를 쓰면 numPlace에 1이 들어갈 줄 알았는데 아래와 같이 nil이 들어간다. 따라서, 해결방법을 찾으려 계속 검색하다가 아래와 같은 방법으로 해결을 봤다. 책보고 진득하게 ..

Software/Swift 2020.03.24

iOS 프로그래밍에서 음성합성 사용하기.

커뮤니케이션에서 필요한 요소 중의 하나가 음성으로 표현하는 것 일 것이다. 이전까지는 Objective-C 만으로 프로그래밍 하다가 Swift 프로그래밍 해 봤다.iOS 7 부터 AVSpeechSynthesizer 클래스를 공개하여, 다른 부가적인 소프트웨어를 사용하지 않더라도 독자적으로 음성합성이 가능하도록 되어있다. 우선 AVSpeechSynthesizer를 사용하기 위해서는 "import AVFoundation" 를 먼저 해 주어야 한다. 그 다음에는 아래와 같이 설정 해 주면 간단히 실행 가능하다. 12345678910111213141516171819202122func speechiOS(sentence: String, languageCode: String){ //AVSpeechSynthesizer..

Software/Swift 2018.04.08
반응형