일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 공공데이터
- sort()
- swiftui keyboard
- sorted()
- swiftui keyboard dismiss
- App Transport Security
- struct
- Array
- SwiftUI
- sqlite3
- Alamofire
- json
- Swift
- codingkey
- Alamofire.AFError.session Task Failed(error: Error Domain=NSURLErrorDomain Code=-1022
- api service key error
- AppTransportSecurity
- NSURLErrorDomain Code=-1022
- uikit
- swiftm
- service key is not registered error
- sqlite
- SERVICE_KEY_IS_NOT_REGISTERED_ERROR
- Today
- Total
목록전체 글 (9)
behan의 개인적인 기술 블로그
#if canImport(UIKit) extension View { func hideKeyboard() { UIApplication.shared.sendAction(#selector(UIResponder.resignFirstResponder), to: nil, from: nil, for: nil) } } #endif 생성 후 Button { locationSearchViewModel.fetchLocationSubject.send(location) hideKeyboard() } label: { Text("Search") } 버튼 action에 추가하면 keyboard 숨기기 가능
Router 설정 let BASE_URL = "베이스 URL" let SERVICE_KEY = "서비스키" enum Router: URLRequestConvertible { case getCandidateInfo(serviceKey: String = SERVICE_KEY!, pageNo: Int = 1, numOfRows: Int = 10, sgId: String, sgTypecode: String, resultType: String = "json", sggName: String = "", sdName: String = "") case getWinnerInfo(serviceKey: String = SERVICE_KEY!, pageNo: Int = 1, numOfRows: Int = 10, sgId: St..
SQLite를 사용하면 별다른 설치 없이 내부적으로 사용이 가능하다 import SQLite3 class DBHelper { static let shared = DBHelper() var db: OpaquePointer? var path = "mySqlite.sqlite" init() { self.db = createDB() } func createDB() -> OpaquePointer? { var db: OpaquePointer? = nil do { let filePath = try FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false).appendingPathCompo..
api를 호출하여 그 정보를 List로 그릴 때, 스크롤을 내리다 마지막 줄에 닿았을 때 자동으로 다음 api 정보를 받아와 리스트 밑에 이어서 그려줄 때 사용할 만한 방법 struct Item: Codable, Identifiable { var id = UUID() var name: String var party: String var age: String } extension Item: Equatable { static func == (lhs: Self, rhs: Self) -> Bool { return lhs.id == rhs.id } } 위의 구조체로 된 Array를 List로 불러올 때 Equatable 프로토콜을 추가해 lhs.id 와 rhs.id 같아질 때 리턴하도록 한다. List( [Ite..
공공데이터 api를 사용하는데 servicekey를 상수에 저장후 parameter로 불러들여왔을 때 serviceKey가 다른 값으로 바뀌어 들어가서 serviceKey를 정확하게 입력했음에도 불구하고 service key is not registered error 가 발생했다. 그래서 처음엔 원인과 해결방법을 몰라 baseUrl String에 그냥 서비스키까지 같이 입력해서 만들었다. 그러던 중 검색을 통해 원인을 알게 되었다. 공공데이터의 serviceKey는 이미 인코딩된 값으로 serviceKey를 제공하는 데 이 값을 사용하게 되면 인코딩이 한번 더 되면서 이상한 값으로 살짝 변경되어 처리 되었다. 간단한 해결방법으로는 serviceKey를 한번 디코딩한 다음 그 값을 사용하면 정상적으로 사용..
swift에서(?) json 파싱을 하기 위해서는 항목명을 그대로 사용해야 한다. 다른 이름으로 사용하기 위해서는 Codingkey를 사용하면 된다. struct CandidateInfoResponse: Codable { //내가 사용할 이름 var getResponse: GetResponse var name: NAME private enum CodingKeys: String, CodingKey { case getResponse = "getPofelcddRegistSttusInfoInqire" // 실제 json 항목명 case name = "name" //내가 사용할 이름과 json 항목명이 같으면 똑같이 넣어줌 } } 참고 : https://www.youtube.com/watch?v=aMes-DVVJ..