목록전체 글 (473)
MUKER_DEV with iOS

Firebase 홈페이지에서 원하는 프로젝트를 만들어 준다음 메인페이지에 있는 '앱에 Firebase를 추가하여 시작하기'에서 해당하는 프로젝트를 선택한다 iOS눌러주고 Bundle Identifier에 있는 이름을 Apple 번들 ID로 입력해줬다 밑에 앱 닉네임하고 App Stroe ID는 나중에 앱스토어에 올리면 기입할 수 있으니까 패스~ 구성파일 다운로드 해주고~ 다운로드 해준 파일을 프로젝트에 넣어준다 그다음 Firebase SDK를 추가 하라고 나오는데 우린 CocoaPods 이용하기 때문에 Package Manager는 신경안써도 됨 코코아 팟에 목록에 들어가보면 친절히 추가 방법이 나와있다 우린 Podfile을 만들어 줬으니까 1번은 넘기고 Firebase포드를 추가해야한다 Firebase..

먼저 cocoa pod을 설치 및 업데이트 한다 그다음 프로젝트가 있는 폴더에 pod을 설치해주면 되는데 터미널에 해당폴더로 갈 수 있게 cd 와 경로를 붙여주면 된다 경로를 쉽게 붙여주는 방법은 폴더를 드래그 해서 터미널에 넣어주면 경로가 알아서 뜬다 경로에 pod init을 해주면 폴더에 pod 파일이 자동 설치가 된다 pod 파일에 원하는 pod을 설치해주면 된다!

pod install을 하니 쏟아지는 방대한 양의 error xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require': dlopen(/Library/Ruby/Gems/2.6.0/gems/ffi-1.15.5/lib/ffi_c.bundle, 0x0009): tried..
먼저 Optional의 기본적인 정의는 "값이 있을 수도 없을 수도 있다" 라고 말해주는 것이다 Optional을 사용함으로서 nil이 있는지 없는지를 확인하기 때문에 값을 타이트하게 관리해 에러를 줄여줄 수 있다 밑에 Optional을 사용하는 5가지 방법이다 1. Force Unwrapping 2. Cheak for nil value 3. Optional Binding 4. Nil Coalescing Operator 5. Optional Chaining 위 5가지 방법을 사용해서 옵셔널을 이해하고 사용해보자 일단 간단하게 옵셔널을 사용해서 변수를 만들어보자 let myOptional: String? myOptional = "Muker" let text: String = myOptional // 에러가..

클로저는 혁명임 함수를 정의할때 엄청 생각보다 많은 코드를 줄여줌 일단! 기본적인 간단한 숫자 두개를 더하는 함수를 만들어봄 func calculator (n1: Int, n2: Int, operation: (Int, Int) -> Int ) -> Int { return operation(n1, n2) } func add (no1: Int, no2: Int) -> Int { return no1 + no2 } calculator(n1: 3, n2: 3, operation: add) calculator 함수를 만들고 첫번째, 두번째 인자에 둘이 더할 값을 받고 세번째 인자에 함수를 받아버림 인자에 들어간 함수 operation은 return값으로서 두개의 값을 return해줄거임 그럼 add 함수도 간단하게..

기업 개발자 계정을 로그인하려면 대표자의 전화번호로 코드가 발송돼서 로그인 할때마다 번호를 물어봐야 한다. 어떻게 로그인 할때마다(신뢰 브라우저가 풀릴때마다) 물어보나, 그럴때 필요한게 이중인증 추가! 내 번호로 이중인증하려면 https://appleid.apple.com/ Apple ID Your Apple ID is the account you use for all Apple services appleid.apple.com 들어가서 회사계정으로 로그인한다. 계정 보안을 클릭하고 신뢰하는 전화번호를 추가시켜주면 된다. 너무 간단 궁금했던게 만약 두개의 번호를 등록하면 로그인 해서 인증 문자를 받을때 무조건 대표자한테 먼저 문자가 가고 추가 선택으로 원하는 신뢰하는 전화번호로 문자를 보내는줄 알고 어짜피..

preview는 기본적으로 canvas에 원하는 기종의 모양으로 뿌려준다. 이때 원하는 크기 만큼의 layout으로 preview를 설정하고 싶다면 .previewLayout 수식어를 사용하면 됩니다. .previewLayout(.fixed(width: 300, height: 70)) Group을 지어서 여러개의 뷰를 한번에 canvas에 띄울 수 있습니다. struct LandmarkRow_Previews: PreviewProvider { static var previews: some View { Group { LandmarkRow(landmark: landmarks[0]) LandmarkRow(landmark: landmarks[1]) } .previewLayout(.fixed(width: 300, ..

BundleExtension.swift extension Bundle { func decode(filename: String, as type: T.Type) -> T { guard let url = self.url(forResource: filename, withExtension: nil) else { fatalError("번들에 \(filename)이 없습니다.") } guard let data = try? Data(contentsOf: url) else { fatalError("\(url)로부터 데이터를 불러올 수 없습니다.") } guard let decodedData = try? JSONDecoder().decode(T.self, from: data) else { fatalError("데이터 복호..

선언형 방식 SwiftUI는 무엇(What)에 초점을 맞춥니다. 명령형 방식이 어떻게(How)에 초점을 맞추는것과 차이가 있습니다. 예를 들어, 선언형 방식으로 파스타를 만든다면 "파스타 한 그릇 만들어주세요" 하고 주문을 넣는 것과 같습니다. 선언을 하면 조리 과정은 요리사에게 전적으로 맡기게 되죠. 이와 비교해 명령형 방식은 파스타를 레시피에 따라 과정을 차례대로 수행하는 것과 같습니다. 단계별 작업 수행 시 이전의 상태가 어땠는지도 중요한 요소입니다. 자동화 SwiftUI는 가능한 많은 기능이 자동으로 수행될 수 있게 제공하는 것입니다. 매번 직접 작성해 주어야 했던 상용구를 생략할 수 있고 코드의 양을 줄여 생산성을 높일 수 있게 되었습니다. 조합 SwiftUI의 API는 뷰의 조합과 분리를 간단..

반올림(round) 소수점이 5보다 크면 올리고, 5보다 작으면 내립니다. round(5.3) // 5.0 round(5.7) // 6.0 올림(ceil) 소수점이 0보다 크면 무조건 올립니다. ceil(5.3) // 6.0 ceil(5.7) // 6.0 내림(floor) 소수점이 0보다 작으면 무조건 내립니다. floor(5.123 // 5.0 floor(5.456) // 5.0 버림(trunc) 정수를 제외한 소수점을 무조건 버립니다. trunc(5.657) // 5.0 trunc(5.765) // 5.0 n번째 소수점 자르기 원하는 소수점 자리를 지정하고, 나머지 부분은 자릅니다. String(format: "%.3f", 5.74589345) // 5.745 String(format: "%.6f",..