분류 전체보기
-
[Swift] 이슈트래킹: Firebase에서 값이 안뜸 (원인: 값을 가져오긴 했는데 closure의 실행 과정에 대한 이해 부족)Swift 2023. 10. 28. 22:27
func fetchMessage() { self.ref.child("Message").observe(.value) { snapshot in guard let jsonString = snapshot.value as? String else { print("데이터를 가져오는 데 실패했습니다.") return } do { let jsonData = Data(jsonString.utf8) let messages = try JSONDecoder().decode([Message].self, from: jsonData) DispatchQueue.main.async { self.messageList = messages //2) 변경해야 하는 print문 위치 print("count::\(self.messageList.c..
-
Codable 프로토콜Swift 2023. 10. 28. 16:37
Codable 프로토콜 : A type that can convert itself into and out of an external representation. typealias Codable = Decodable & Encodable Message Data struct Mesage: Codable { let sender: String let content: String let timeStamp: Double } Encoding (Swift Data -> JSON) let sampleInput = Mesage(sender: "lyla", content: "오늘 뭐해?", timeStamp: Date().timeIntervalSince1970) func encodeFunc() { do { let encod..
-
[SwiftUI] Firestore로 채팅 기능 구현하기code 2023. 10. 26. 10:25
채팅 기능을 구현하던 중 마주한 문제를 적어봅니다. 한쪽에서는 메세지를 보내도 다른 한 기기에서는 메세지 업데이트가 안되는 상황이었습니다. 상황: addSnapshotListener로 Firebase를 구독중인 ViewModel의 메서드를 만들어 놓고 구독중인 상황 ChatRoomStore의 프로퍼티 1) chatRoomList : 모든 채팅방을 가지고있음 2) messageList: 채팅방에서 해당하는 두 유저 사이의 Message만 배열로 가지고있음 final class ChatRoomStore: ObservableObject { @Published var chatRoomList: [ChatRoom] = [] @Published var messageList: [Message] = [] } func s..
-
git cherry-pick 체리픽 써보기code/github 2023. 10. 20. 11:39
git cherry-pick🍒 다른 브랜치에 있는 커밋을 선택하여 내 브랜치에 적용시킬 때 사용하는 명령어 git cherry-pick d090a8b[커밋ID] 자동 병합: -[파일경로]-/ChatRoomView.swift error: 다음을 적용할(apply) 수 없습니다: d090a8b... [Fix] 이전 채팅방이 보이는 오류 수정 힌트: After resolving the conflicts, mark them with 힌트: "git add/rm ", then run 힌트: "git cherry-pick --continue". 힌트: You can instead skip this commit with "git cherry-pick --skip". 힌트: To abort and get back to..
-
[Swift] 문자열 내 p와 y의 개수카테고리 없음 2023. 10. 19. 01:09
문제 설명 대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴합니다. 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다. 예를 들어 s가 "pPoooyY"면 true를 return하고 "Pyy"라면 false를 return합니다. 제한사항 문자열 s의 길이 : 50 이하의 자연수 문자열 s는 알파벳으로만 이루어져 있습니다. import Foundation func solution(_ s:String) -> Bool { var ans:Bool = false var countP: Int = 0 var coun..
-
[Swift] 정수 제곱근 판별Coding Test 2023. 10. 19. 00:50
문제 설명 임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다. n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요. 제한 사항 n은 1이상, 50000000000000 이하인 양의 정수입니다. 입출력 예 n return 121 144 3 -1 입출력 예 설명 입출력 예#1 121은 양의 정수 11의 제곱이므로, (11+1)를 제곱한 144를 리턴합니다. 입출력 예#2 3은 양의 정수의 제곱이 아니므로, -1을 리턴합니다. import Foundation func solution(_ n: Int64) -> Int64 { if sqrt(Double(n)).truncatingRemainder(..
-
Zstack에서 버튼이 중첩해서 눌리는 현상(position vs offset)Swift/SwiftUI 2023. 10. 1. 17:31
에러 현상 : 버튼 이외의 화면을 눌렀는데 버튼이 눌리는 현상. 해결 방법 : Text가 아닌, Button 전체(label)에 position을 적용, position은 View가 사용할 수 있는 크기만큼 늘어난다. -> text영역 이외도 text로 적용된다. ZStack{ HStack{ Button { Coordinator.shared.clothingBinStore.handleButtonTap(buttonType: .currentMap) } label: { Text("현재 지도") .background( Rectangle() .fill(.white) ) .padding() // Text자체에 적용하는 것이 아님 (삭제) .position(x:350, y:80) } //이 버튼에 포지션 적용 .pos..
-
[Swift] 네이버 지도 api - 지도 중심 좌표 받아오기앱 개발 기록/의류 앱 개발 기록 2023. 9. 29. 21:38
1. NMFMapView를 사용 중인 뷰 컨트롤러에 NMFMapViewCameraDelegate 프로토콜을 선언 2. -mapView:addCameraDelegate로 등록 3. 카메라의 위치가 변경되면 -mapView:cameraIsChangingByReason: 콜백 메서드가 호출 final class Coordinator: NSObject, ObservableObject, NMFMapViewCameraDelegate { let view = NMFNaverMapView(frame: .zero) private override init() { super.init() view.mapView.addCameraDelegate(delegate: self) } } func mapView(_ mapView: NMF..