전체 글
-
UserDefaults을 이용하여 로컬에 데이터 저장하기(2) - Encoder & Decoder데이터 저장/데이터 저장 in 로컬 : UserDefaults 2022. 8. 18. 11:36
이전에 userDefaults에 데이터를 저장하면서 타입캐스팅 방식을 이용했는데, 사실, userDefaults에 저장할 데이터로서 적정한 것들이라면 타입캐스팅까지도 필요하지 않을 것이란 생각이 든다. 그래도 아직 다른 저장방식을 배우지 않은 상태에서 예제를 계속 하다 보니 타입캐스팅이 까다롭다고 느껴졌고, 그러다 강의에서 배웠던 JsonEncoder & Decoder가 생각나서 시도해봤는데 잘 되었다. 그래서 검색을 해보니 인코딩&디코딩에 JSON과 Property list 두 가지 방식이 있었다. 방법은 거의 동일해서 그 방식을 간단하게 정리해보면 우선 첫번째는 저장할 데이터의 타입을 Codable로 선언해야 한다. struct NewAlram: Codable { var id = "" let date..
-
UserDefaults을 이용하여 로컬에 데이터 저장하기(1)데이터 저장/데이터 저장 in 로컬 : UserDefaults 2022. 8. 17. 14:23
To do List 앱을 사용하는데, 다음날 앱을 켰더니 작성했던 내용이 사라지면 안되지 않는가 이는 사용자로서는 당연한 얘기인데, 개발자로서는 중요한 작업 항목이다. App에서 사용자가 만드는 것이 있다면 App은 그 데이터를 사용자가 지우기 전까지 저장하고 있어야 한다. App이 데이터를 저장하는 곳은 크게 2가지라고 보면 될 것 같다. 첫번째는 로컬 저장소, 즉 개인이 사용하는 기기 자체 저장소이고, 두번째는 App을 만든 회사가 가지고 있는 Server일 것이다. (cloud는 데이터를 저장할지의 여부를 선택할 수 있고, 개인이 관리하는 것이니 여기서 다룰 내용은 아니다.) 자, 그럼 이제 여기서 다룰 내용은 첫번째인 데이터를 로컬에 저장하는 방법인데, 그 방법도 여러 가지가 있는 모양이다. 가장..
-
[4]_2_2. (Firebase) RealTime Database 데이터 수정하기서버/2.(Firebase) Realtime Database 2022. 8. 4. 16:50
이제 Database에 데이터를 추가하고, 수정하고, 삭제하는 법을 알아보자. 서론: 데이터 수정의 기준 데이터를 불러와서 보여줄 때는 통째로 불러와 내가 만든 배열에 넣고 순서를 정렬해서 보여주면 됐다. 그 중 어떤 데이터를 선택해서 그 데이터의 상세 데이터를 볼 때도 내가 코딩한 배열만 신경 쓰면 됐다. 데이터를 불러온 순간부터는 내 배열만 신경쓰면 되는 것이었다. 물론 거기에 필터링이 들어가고 하면 다르지만, 일단 그건 차치하고. 이와 달리 데이터를 쓰고 수정할 때는 정확히 어떤 데이터를 어떤 위치에 쓸 것인지 기준을 줘야 한다. 사실 이는 데이터 베이스를 만들 때부터 데이터들을 어떻게 관리해 나갈지의 가장 기초적인 문제일 것이다. 예를 들어, 아이템들을 사람 이름처럼 String으로 구분할 수도 ..
-
[6]_1_3. Motion[7] Human Interface Guidelines/1. Foundation 2022. 7. 28. 13:17
HIG 세번째 타임 : Motion 내용이 짧아서 부담이 없다. IOS 플랫폼 각 요소에는 자동으로 모션들이 포함되어 있다. 아래의 내용은 그 모션들의 의미이자, 만약 내가 모션을 만든다면 아래의 의미를 담아야 할 것이다. (1) 모션은 사용자와 의사소통하는 하나의 수단으로 사용해야 한다. 하나의 움직이는 모션을 제공함으로써 사용자에게 '이렇게 한다는 거지?' 또는 '그러면 이렇게 될 거야' 또는 '그럼 이건 어떻게 할래?' 등과 같은 피드백을 줄 수 있어야 한다. (2) (1)의 말을 바꿔 말하면 모션을 만들고 싶다는 이유만으로 모션을 만들지는 말자. 사용자에게 단절감을 주거나 산만함을 줄 수 있다. (3) 모션 사용 여부를 설정할 수 있도록 하자. 사용자가 해당 모션을 볼 수 없는 경우도 꽤 있으니 ..
-
[4]_2_1. (Firebase) RealTime Database 데이터 받아오기서버/2.(Firebase) Realtime Database 2022. 7. 27. 18:30
Firebase 집사님 사용 2탄 - database 사용하기 Firebase에서 제공하는 database는 2가지인 듯 하다. 하나는 Firestore Database, 또 하나는 지금 사용할 Realtime Database 아직 Firestore는 안 배워서 그 차이는 Firestore를 해보면서 알아보기로 한다. Step1. 준비 작업 상기시킬겸 준비작업을 다시 한 번 되뇌어본다. (1) Firebase 사이트에서 프로젝트 생성 (2) 프로젝트에 iOS 어플 추가 (어플의 번들id 입력) (3) GoogleService-info.plist 다운로드 --> X-code 프로젝트 navigator에 삽입 (4) X-code의 해당 폴더에서 터미널 열기 --> pod init (실행 후 닫지 않고 대기)..
-
[6]_1_2. Right to Left[7] Human Interface Guidelines/1. Foundation 2022. 7. 26. 13:22
HIG > Foundation의 두번째 타임. LTR : Left To Right / RTL : Righ To Left 각 나라마다 컨텐츠를 작성하는 기본 방향이 있을 것이다. 우리 나라는 LTR의 대표격인가 -- 글의 작성도 LTR이고, 책을 넘길 때도 LTR이고, 핸드폰의 모양[기능명 - 설정버튼]도LTR이다. 다른 예로 일본을 보면 -- 글의 작성은 LTR인데, 만화책을 보면 컷 순서나 책을 넘기는 건 RTL이다. HIG의 내용을 보면 아랍어나 히브리어는 글의 작성부터 LTR이라고 한다. 이 LTR / RTL은 현지화의 중요한 요소일 것이다. 1. 텍스트의 정렬 (1) 우선 LTR 정렬이라 함은 RTL을 좌우로 반전한 스타일이라 생각하면 된다. 글의 작성이 LTR이라면 정렬도 그 글의 시작에 맞추어..
-
[4]_1_3. (Firebase) 비밀번호 변경 / 탈퇴서버/1.(Firebase) Authentication 2022. 7. 24. 16:29
비밀번호 변경 비밀번호 변경은 이메일/패스워드 로그인 방식에만 해당하며 탈퇴를 전체를 포괄한다. 우선 로그인이 완료된 화면에서 비밀번호 버튼을 만들고 구글을 이용해 로그인을 할 경우는 안 보이게 하는 코드를 작성한다. override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) let email = Auth.auth().currentUser?.email ?? "고객" lblWelcome.text = """ 환영합니다. \(email)님 """ let isEmailSignIn = Auth.auth().currentUser?.providerData[0].providerID == "password" btnChangePasswor..
-
[4]_1_2. (Firebase) Google id를 이용한 가입 / 로그인 / 로그아웃서버/1.(Firebase) Authentication 2022. 7. 24. 15:59
준비작업 (3개 step) Step1. Firebase 사이트 작업 사용할 앱에서 구글 id 사용을 위해 Firebase 홈페이지 > Authentication(인증) > Sign-in method > 버튼(새 제공업체 추가)에서 구글을 추가한다. Step2. pod 설치 앞서 Firebase를 이용한 email/password 로그인을 작업했다는 전제하에 pod 'GoogleSignIn'을 설치해 준다. 최종적으로 email/password, Google 로그인을 사용할 경우, 아래처럼 두가지 라이브러리를 설치하면 된다. 설치하는 방법은 해당 프로젝트의 Podfile을 열고 > 위에처럼 작성하여 저장, 닫기 > 해당 프로젝트 폴더에서 터미널을 열어 pod install 실행.....설치 완료 Step3..