Apple 33

[SwiftUI/화면이동] navigationDestination 바르게 사용하기

#문제 NavigationLink(destination: , isActive: )이 iOS16+ deprecated되어서 더 이상 사용할 수 없었습니다. 그래서 다른 메서드인 navigationDestination 사용하였는데, 화면이 전환되지 않았습니다. NavigationLink(destination: , isActive: ) // deprecated! #오류 처음에 코드를 짰을 때 navigationDestination이 작동하지 않아서 다음 화면으로 넘어가지 않았습니다. struct OpeningView: View { @State private var moveToScoreBoard = false @State private var moveToLoadRecentGame = false var body:..

Apple/SwiftUI 2024.01.02

[Dart & Swift] 변수

변수 관습적으로 함수나 메서드 내부에서 지역 변수를 선언할 때에는 var 사용 class에서 변수를 선언할 때에는 타입을 지정해 줌 String name = “하루”; dynamic 스위프트의 Any와 같음. 변수명 앞에 타입을 dynamic으로 지정해주거나, var 키워드와 변수명을 선언 후 값을 지정하지 않으면 됨 null safety 스위프트의 옵셔널 개념 어떤 변수(데이터)가 null이 될 수 있음을 명시하는 것 String? haru = 'haru'; haru = null; // ㅇ에러 안남 final variables 한번 정의된 변수를 수정할 수 없게 만들 때 var 대신 final 키워드 사용 late 초기 데이터 없이 변수를 선언할 수 있게 해줌 late final 변수 데이터를 나중에 ..

Apple/Swift 2023.11.29

[SwiftUI 특징] 선언적 구문, 데이터 주도적이다.

선언적 구문 SwiftUI를 사용하면 레이아웃이 실제로 구축되는 방식의 복잡함에 대해 고민할 필요 없이 사용자 인터페이스가 어떤 모양을 이어야 하는지를 선언하는 방식으로 레이아웃을 생성할 수 있다. 이 과정에는 기본적으로 레이아웃에 포함될 컴포넌트들을 선언하고, 그것의 레이아웃 매니저 종류(VStack, HStack, Form, List 등)를 명시하고, 속성(버튼의 텍스트, 색상, 호출될 메서드)을 설정하기 위해 수정자(modifier)를 사용한다. 이렇게 선언하면 레이아웃의 위치와 컨스트레인트, 렌더링 방법에 대한 세부사항은 SwiftUI가 자동으로 처리한다. 데이터 주도적 SwiftUI는 앱의 데이터 모델과 사용자 인터페이스 컴포넌트, 그리고 기능을 제공하는 로직을 binding하는 여러 방법으로 ..

Apple/SwiftUI 2023.10.27

[Swift] JSON 데이터 Decodable을 사용하여 구문 분석하기

Decodable 프로토콜을 사용하여 JSON을 사용자 정의 객체 형식으로 변환할 수 있습니다. 아래와 같은 json이 있다고 할 때, { name: "haru" id: 23 } 이를 디코딩하려면, JSON 필드와 일치하는 속성을 가진 모델을 생성합니다. struct Blog: Decodable { let id: Int let name: String } 그리고 JSONDecoder를 사용합니다. let bloger = try? JSONDecoder().decode(Blog.self, from: jsonData) 자료 출처: 스위프트 애니타임

Apple/Swift 2023.10.16

[Swift] delete API 호출이 되는데 데이터 삭제가 안 되는 이유

해결 방법: Swift 코드의 httpMethod 속성 값을 API에서 요구하는 httpMethod로 일치시켜주기! POSTMAN으로 Delete url을 체크해보니 정상적으로 작동이 되는데 swift에서 코드가 작동하지 않았습니다. 뭔가 빠뜨린 것이 있다고 생각이 들었고, 그동안의 API 호출과 무엇이 다를까 생각해보았습니다. 정보를 가져오는 GET Method만 사용했다고 생각이 들었습니다. 그래서 초반에 URL을 작성할 때 URLRequest에서 httpMethod 기능이 있다는 것을 기억했습니다. httpMethod 이 프로퍼티는 기본적으로 "GET"으로 작동하고 있습니다. 이제 httpMethod를 "DELETE"로 요청하는 코드를 추가 해줍니다. guard let url = URL(string..

Apple/Error 2023.06.04

Xcode 스토리보드 에러 invalid nib registered for identifier

에러 문구 "nib must contain exactly one top level object which must be a UITableViewCell instance" 에러 원인 스토리보드에 UITableViewCell 계층에서 벗어난 개체가 있을 경우 생기는 에러 -> 사진의 reusableCell 계층에서 벗어난 Label이 원인 에러 해결 밖에 있는 Label을 삭제하니 해결됨, 필요할 경우 UITableViewCell 안으로 넣을 것 출처 https://stackoverflow.com/questions/20442311/invalid-nib-registered-for-identifier-cellname-nib-must-contain-exactly-one invalid nib registered f..

Apple/Error 2023.05.03

Xcode 스토리보드 에러 "LinkStoryboards failed with a nonzero exit code"

해결방법: 연결하는 스토리보드의 identify 확인, 연결받는 스토리보드의 StoryboardID 및 Identify 확인 대상 스토리보드 ViewController에 Identity Inspector의 Identity 섹션에 Storyboard ID가 있는지 확인합니다. Storyboard Reference의 Attributes Inspector에서 Reference ID(예: goHereVC)를 다시 확인합니다. 출처 https://stackoverflow.com/questions/63265699/command-linkstoryboards-failed-with-a-nonzero-exit-code Command LinkStoryboards failed with a nonzero exit code I'..

Apple/Error 2023.05.02

[오토레이아웃] Content Hugging VS Content Compression Resistance

텍스트 필드의 Content Hugging Priority(컨텐츠 허깅 우선순위)와 Content Compression Resistance Priority(컨텐츠 압축 저항 우선순위)는 Auto Layout 시스템에서 뷰의 크기 조절에 관련된 우선순위 옵션입니다. Content Hugging Priority(컨텐츠 허깅 우선순위) = 압축 뷰가 자신의 컨텐츠를 허깅(압축)하는 우선순위를 나타냅니다. 즉, 컨텐츠의 크기에 맞게 뷰의 크기가 조절되는데, 컨텐츠 허깅 우선순위가 높을수록 뷰는 자신의 컨텐츠를 더 많이 허깅하고 크기를 더 작게 유지하려고 합니다. Content Compression Resistance Priority(컨텐츠 압축 저항 우선순위) = 확장 뷰가 자신의 컨텐츠를 압축(확장)하는 우선..

Apple/Xcode 2023.04.09

inout 파라미터 사용 / 점수 reset 함수

안젤라유 No.9 quiz 앱을 만드는 과정에서 흥미로웠던 과제 두 개를 포스팅 해보려 합니다. 안젤라가 작성한 코드와 제가 짠 코드를 비교해보겠습니다. [과제 완료 사진] 1. 퀴즈를 맞추면 Score 점수가 올라감 2. 퀴즈를 다 풀고 첫 문제로 돌아가면 Score가 0으로 reset 됨 [과제1. 퀴즈 score 올리기] #안젤라 코드 // score 전역 변수 선언 var score = 0 // 기존 함수에 기능 추가 mutating func checkAnswer(userAnswer: String) -> Bool { if userAnswer == quiz[questionNumber].answer { score += 1 // 기존 함수에 score 점수 +1 기능 추가 return true } el..

Apple/Swift 2023.04.04