본문 바로가기

전체 글

(67)
SwiftUI) 다이나믹 리스트 SwiftUI에서 다이나믹한 리스트 만들기 SwiftUI에서 List나 ForEach를 사용할 경우 각 요소를 어떻게 구분할지 지정해줘야한다. 즉, Unique Identifier를 지정해줘야 한다. 이는 두 가지 방식으로 가능하다. 1) Key Path List(landmarkData, id: \.id) { landmark in LandmarkRow(landmark: landmark) } struct Landmark { var id: Int var name: String fileprivate var imageName: String fileprivate var coordinates: Coordinates var state: String var park: String var category: Categor..
iOS) Build input file cannot be found 에러 해결 Git으로 협업할 때 project.pbxproj 충돌 해결 xcode로 작업하다가 다음과 같은 에러가 발생했을 때 여러 원인이 있을 수 있다. Info.plist 파일의 위치가 잘못됐을 때 프로젝트 명을 바꾼 후 경로가 이상해졌을 때 Xcode 10으로 업그레이드 한 후 그치만 나의 경우 Git으로 협업할 때 머지하는 과정에서 project.pbxproj 파일에 충돌이 발생해서였다. 정확히 말하자면 충돌이 발생하지 않았다.😡 아무 충돌없이 머지되어 잘 된줄 알았는데 날벼락같이 저런 에러가 발생했다. 혹시나 하는 마음에 project.pbxproj을 열어보니 문제가 됐던 파일인 Badgeable.swift가 중복되어 생성되어있었다. 나와 다른 팀원이 둘 다 같은 이름의 파일을 생성하고 머지해서 생긴 문제..
iOS) NavigationBar의 Border 지우기 xcode에서 NavigationBar를 만들었을 때 다음과 같이 선이 생긴다. 스토리보드 상에서 지울수 있는 방법이 없을까 찾아봤지만 없는듯하다. 대신 코드에서 지우는 방법을 찾았다. override func viewDidLoad() { super.viewDidLoad() setNavigationBar() } func setNavigationBar() { self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for:.default) self.navigationController?.navigationBar.shadowImage = UIImage() self.navigationController?.navigationBar.layout..
iOS) UITableView로 채팅 UI 만들기(1) 생성 UITableView 생성 UITableView를 스토리보드에 추가한다. 그다음 assistant를 열고 컨트롤러에 IBOutlet으로 연결한다. Prototype Cell 생성 우측 상단의 뷰 인스펙터 중 Attributes를 선택 후 Prototype Cells의 수를 필요한 만큼 증가시킨다. 그다음 File-> New-> File...을 선택하여 스토리보드에 생성된 프로토타입 셀에 대한 뷰 파일을 생성한다. Cocoa Touch Class를 선택 후 subclass는 UITableViewCell을 선택한다. 기본적으로 생성한 셀은 커스텀이다. 생성한 후 반드시 테이블 뷰 셀의 identifier를 지정해줘야한다. message에 해당하는 label과 messageBox에 해당하는 UIView를..
iOS) NSCoding과 Archive를 통한 데이터 저장 - (2) enum type archive 처음에 enum 타입을 통으로 encode했더니 에러가 발생하였다. archive할 때 화나는 점이 encode 하거나 decode할 때 따로 확인하지 않으면 에러가 발생하지 않는다는 것이다. unit test를 생활화하자! 아무 에러없이 돌아가서 문제가 있는지 모르다가 멀티 씬을 적용했을 때 데이터가 초기화 되길래 하나씩 살펴보니 enum에서 문제가 있었다. Convert rawValue to enum enum의 rawvalue인 String 타입으로 encode한 다음 decode할 때 해당 스트링에 매칭되는 enum 값을 찾도록 하였다. enum ProcessedType: String { case processed = "processed", lowFatProcesse..