반응형

읏차, IT차 326

[Swift] chat에서 발신자와 수신자 구별

Chat에서 발신자와 수신자를 구별하기 ChatViewController에서 tableview의 cell에서 메시지의 발신자는 현재 로그인 한 사용자와 동일 로드 중인 현재 메시지는 현재 사용자이고, 우리가 정한 스타일의 셀로 표시 현재 사용자와 동일하지 않은 경우 다른 스타일로 표시해야함 1. 두 개의 다른 메시지 셀을 갖거나 2. 단일 메시지 작업을 할 경우 셀을 선택하고 보낸 사람에 따라 다르게 스타일을 지정한다. 2번으로 해보면 MessageCell.xib파일로 이동해서 UI수정을 하고 원리는 메시지의 발신자가 현재 메시지의 이메일 주소와 같은지 비교하고 맞다면 me이미지와 메시지를 보게 하고 다르다면 you이미지를 보이게 한다. ChatViewController에 가서 tableVeiw셀 메서..

[Swift] Firestore에서 읽은 데이터를 시간 순으로 정렬

저장한 문서에 타임스탬프를 추가하는 방법 @IBAction func sendPressed(_ sender: UIButton) { // firestore 시작하기 -> 데이터 저장 if let messageBody = messageTextfield.text, let messageSender = Auth.auth().currentUser?.email { // currentuser가 있는 경우 email을 내부에 저장 db.collection(K.FStore.collectionName).addDocument(data: [K.FStore.senderField: messageSender, K.FStore.bodyField: messageBody, K.FStore.dateField: Date().timeInterv..

[Swift] FireStore 실시간 업데이트 수신 대기(실시간 데이터 읽어오기)

getDocuments -> addSnapshotListner로만 바꿔주면 실시간으로 업데이트 할 수 있다. func loadMessages() { // firestore 시작하기 -> 데이터 읽기 db.collection(K.FStore.collectionName).addSnapshotListener { (querySnapshot, error) in self.messages = [] // 비우고 넣고 비우고 넣고 if let e = error { print("There was an issue retrieving data from Firestore. \(e)") } else { if let snapshotDocuments = querySnapshot?.documents { for doc in snapsh..

[Swift] FireStore에 저장한 데이터 불러오기(데이터 읽기)

override func viewDidLoad() { super.viewDidLoad() loadMessages() func loadMessages() { messages = [] db.collection(K.FStore.collectionName).getDocuments { (querySnapshot, error) in if let e = error { print("There was an issue retrieving data from Firestore. \(e)") } else { if let snapshotDocuments = querySnapshot?.documents { for doc in snapshotDocuments { // firebase -> firestore에 제시된 방법과 동일 le..

[Swift] FireStore에 데이터 저장하기

let db = Firestore.firestore() @IBAction func sendPressed(_ sender: UIButton) { if let messageBody = messageTextfield.text, let messageSender = Auth.auth().currentUser?.email { // currentuser가 있는 경우 email을 내부에 저장 db.collection(K.FStore.collectionName).addDocument(data: [K.FStore.senderField: messageSender, K.FStore.bodyField: messageBody ]) { error in if let e = error { print("There was an issue..

[Swift] Xib파일을 사용하여 TableView에서 셀 사용자 지정

CoCoaPod Class로 만들고 Subclass를 UITableViewCell로 -> XIB파일 생성한다. UI를 설정해주고 난 뒤에 xib파일을 viewDidLoad에 등록하기 TableViewDataSource로 이동해서 dequeueReusableCell로 가져와야 되고 그렇게 하기 위해서는 클래스->클래스 캐스팅이 필요하다 reusableCell에서 MessageCell클래스를 캐스팅해야함 extension ChatViewController: UITableViewDataSource { func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return messages.count } func tab..

[Swift] Firebase 이메일 회원가입, 로그인하기, 로그아웃하기

우선적으로 Firebase를 Addpackage로 Firebase Auth를 추가하고 이메일로 회원가입하는 절차 if let email = emailTextfield.text, let password = passwordTextfield.text { Auth.auth().createUser(withEmail: email, password: password) { authResult, error in if let e = error { print(e.localizedDescription) } else { // Navigate to the NextViewController self.performSegue(withIdentifier: "identifier", sender: self) } } } 등록한 이메일 인증해..

[Xcode] 터미널에서 podfile 설치 후 workspace생성 안되는 오류

터미널을 켜서 sudo gem install cocoapods cocoapod 설치를 한 이후 pod --version 2. 버전 확인 해서 설치가 됐음을 확인하고 pod init 3. 프로젝트 디렉터리에 podfile 생성시키고 pod install 4. 설치를 진행하면 원래 workspace가 생성되야 하지만 생성되지 않고 버그가 뜬다. /Library/Ruby/Gems/2.6.0/gems/ffi-1.15.5/lib/ffi/library.rb:275: [BUG] Bus Error at 0x0000000104e94000 이런 무시무시한 문자들이 뜬다.. 무섭다... 검색 좀 해보니 M1에서만 일어나는 반응들 같고, 스택오버플로우에서 해결책을 찾음 해결책 pod init까지 하고 podfile생성 후에 ..

반응형