Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Clone/Instagram] 프로필 Scene 구현 | 색다른 시도 & 새롭게 알게된 개념 & 개선해야 할 기능 #7 #20

Open
SHcommit opened this issue Oct 31, 2022 · 0 comments

Comments

@SHcommit
Copy link
Owner

프로필 Scene 구현

구현 영상

강의와는 다르게

  • 로그인된 사용자의 정보를 Firebase DB에서 꺼내와 실시간으로 갱신하도록 추가 구현
  • profileHeader의 프로필, 사용자 이름등 Firestore DB의 데이터를 fetch하는 함수 만듬
  • Firestore Database에 값을 꺼내오거나 저장할 때 Codable타입으로 Model을 새로 구현했다.

개선해야 할 기능

  • 회원가입 실패 시 버퍼링 끊기
  • profile Header의 image를 Storage.storage에서 받아오는데 시간이 많이 걸림. 기능 개선이 필요.. (원래 파이어베이스에서 작은 이미지 받아오는 경우도 느린지 모르겠다,,)

  • ProfileController에서 grid, list bookmark 버튼이있는데 이를 stackview+pageViewController로 추가 구현해보기

새로 알게된 것

컬랙션 헤더를 사용하기 위해서는

  1. 헤더를 등록해야함
    collectionView.register(_:forSupplementaryViewOfKind:withReuseIdentifier:)
  2. DataSource로 Header뷰를 반환하면 됨 collectionView(_:viewForSupplementaryElementOfKind:at:)

이때 얘는 UICollectionReusableView를 반환함으로 HeaderView의 타입은 UICollectionReusableView로 구현하면 된다.

  1. collectionView(_:layout:referenceSizeForHeaderInSection:)

헤더 크기 반환!


CollectionViewDelegateFlowLayout

  • collectionView(_:layout:minimumLineSpacingForSectionAt:)

minimumLineSpacing 경우 아래로 스크롤하는 레이아웃일 때 row간의 최소 간격을 정한다. horizontally의 collectionLayout의 경우 column간 최소 간격을 결정한다.

  • collectionView(_:layout:minimumInteritemSpacingForSectionAt: )

minimumInteritem을 설명하자면 아래로 내리는 collection layout인 경우 cell의 row간 최소 space를 설정할 수 있게 해준다. 옆으로 스크롤하는 collectionLayout인 경우 cell의 column간 최소 space를 설정하게 해준다.

vertical 기준으로 minimumLineSpace는 행 간의 최소 간격, minimumInteritem의 경우 row의 cell간 최소 간격을 지정한다.


cf.

UICollectionViewDelegateFlowLayout
-> collectionView cell의 사이즈 조절

UICollectionViewDelegate
-> cell 선택 관련 메서드


cocoapods 관련

삭제 후 재설치 or 업데이트

  • pod cache clean --all && pod install --repo-update

  • pod update

  • 내가 설치한 cocoapods과정 (iterm을 로제타로 실행)

  • 코코아팟 문제 생겼을 때 삭제하는 방법 참고로 프로젝트에 연결된 Pods, .xcworkspace 등은 삭제해도 된다. 다시 깔면 됨. 중요한건 소스코드다.

마주한 에러

arch -x86_64로 m1 용으로 설치했는데 아래 에러가 계속 발생했다. 음 Target-> Build Settings ->Architectures -> Excluded Architectures 에서 arm64를 추가 해보고 Any ios simulator SDK arm64로 선언해도 여전히 해결이 안됬다.


뭔가 대단히 잘못 되어가고 있다... 원래 내 목적은 firestore에서 저장된 도큐멘트의 필드값 유저 정보를 Codable 타입으로 받아오기 위해서 ... pod FirebaseFirestoreSwift을 추가한 것 뿐인데

마에2

마에1

이 에러들이 계속 발생했다;;;

arch -x86_64로 m1 용으로 설치했는데 아래 에러가 계속 발생했다. 음 Target-> Build Settings ->Architectures -> Excluded Architectures 에서 arm64를 추가 해보고 Any ios simulator SDK arm64로 선언해도 여전히 해결이 안됬다.

(진짜 큰일났다. 2일째 개발은 물론 지금 프로젝트 내 파일까지 잘못 삭제해 버렸다;;)

cocoapods를 삭제하고 재 설치하려고 했는데

t11

이 에러가 발생했다. chmod로 user에게 권한도 줬지만 여전히 이런 에러가 발생했고 위와 같은 에러가 발생햇다.

ㄷ1

ㄷ2

(살려줘..)

지금 gem으로 bundler도 설치가안되고 cocoapods도 설치가 여전히 안되고 있다...

어찌어찌 해서 arch -x86_64 로 코코아 팟을 설치했을 땐

Ignoring ffi-1.15.4 because its extensions are not built. Try: gem pristine ffi --version 1.15.4

이 에러가 발생하면서

마에1

이 에러가 발생했는데 이 에러는 자세한 에러를 알 수 없다고 한다... 퓨ㅠㅠ 이것때매 뭐 잘못 삭제 했다가 프로젝트 안에 파일 일부를 실수로 삭제 해버린 것..

지금 가장 큰 문제는 gem을 통해 설치하려고하면 사용자 권한이 아니라 루트 권한을 요구해서 **(Gem::FilePermissionError)**가 자꾸만 발생했다.

이분의 블로그 글을 통해서 설치해도 마찬가지였는데...

rbenv 최신 버전 3.1.2인가? 그걸로 계속했는데 안됬다. 어떤 다른 분의 글에서는 3.xx버전에선 뭔가가? 설치가 안된다고해서 2.xx버전으로 재 설치했는데 다행히 Gem::FilePermissionError 가 더이상 발생되지 않았다...

그래도 여전히 Command ComplieSwift failed with a nonzero exit code가 발생했다...

결국 해결책은 찾지 못해서 앱을 다시 새로 만들었는데도 위에 에러가 계속 발생했다.

지금 그 이유를 알았다;;;; RESTful API가 아니라 파이어베이스를 사용하기 때문에 파이어베이스 시작 할 때 앱 번들 아이디를 토대로 파이어베이스 plist가 주어지고, AppDelegate에 FirebaseApp.configure()로 등록도 해줘야 하는데 이 부분을 간과했다. 그래서 파이어베이스에 등록된 앱을 삭제하고 다시 새로 만든 번들을 추가해서 다행히 에러가 해결되었다... ㅠㅅㅠ 약 2일간 고생했다..


다음엔 rvm을 써봐야겠다. 결론. 깃헙 커밋을 자주자주 하고 정말 안 될때는 새로 만들어서 소스코드 복붇하기. 파이어베이스 쓸 경우 앱 번들아이디 삭제 후 새로 등록하기

@SHcommit SHcommit changed the title [Clone/Instagram] 프로필 Scene 구현 | 색다른 시도 & 새롭게 알게된 개념 & 개선해야 할 기능 #6 [Clone/Instagram] 프로필 Scene 구현 | 색다른 시도 & 새롭게 알게된 개념 & 개선해야 할 기능 #7 Dec 10, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant