Итак, я уже несколько дней пытаюсь заставить этот канал работать, и я просто в тупике. Я вызвал метод getData, чтобы попытаться получить список идентификаторов сообщений от пользователя, чтобы затем получить их данные и поместить их в канал. Однако, когда я запускаю код, канал оказывается пустым, однако данные выводятся на консоль после извлечения идентификатора сообщения. Итак, это не проблема с подключением или чем-то еще, это просто моя структура кода. Переменная "scope" - это начало основной c попытки разбивки данных на страницы, но на самом деле я просто пытаюсь заставить ее работать вообще в данный момент. Любая помощь приветствуется. Вот мой код:
//
// ProfileFeedViewController.swift
// Meditation
//
// Created by Harper Chisari on 7/27/20.
// Copyright © 2020 Harper Chisari. All rights reserved.
//
import UIKit
import Firebase
import FirebaseStorage
import FirebaseDatabase
var currentPA: Array<String> = []
class ProfileFeedViewController: UIViewController{
@IBOutlet var profileFeedTableView: UITableView!
var posts: [Post] = []
override func viewDidLoad() {
super.viewDidLoad()
let scope = 0
posts = createArray(scope: scope)
profileFeedTableView.reloadData()
}
}
func createPostArray(scope: Int, uid: String) -> Array<String>{
db.collection("users")
.document(uid)
.getDocument { (document, error) in
// Check for error
if error == nil {
// Check that this document exists
if document != nil && document!.exists {
let documentData = document!.data()
let postArray = documentData?["post id's"] as! Array<String>
print(postArray)
//if postArray.count >= 25 { currentPA = Array( postArray[0+scope*25...24+scope*25])} else {
currentPA = postArray
print(currentPA)
// }
} else {
print("huh?")
}
}else{
print(error!)
}}
/*db.collection("users")
.document(uid)
.getDocument { (document, error) in
// Check for error
if error == nil {
// Check that this document exists
if document != nil && document!.exists {
let documentData = document!.data()
let postArray = documentData?["post id's"] as! Array<String>
print(postArray)
//if postArray.count >= 25 { currentPA = Array( postArray[0+scope*25...24+scope*25])} else {
currentPA = postArray
print(currentPA)
// }
} else {
print("huh?")
}
}else{
print(error!)
}}*/
print("ye")
print(currentPA)
return currentPA
}
func createArray(scope: Int) -> [Post] {
var tempPosts: [Post] = []
let currentPA = createPostArray(scope: scope, uid: uid)
print("listen")
print(currentPA)
print("hey")
for i in currentPA {
print(i)
db.collection("posts")
.document(i)
.getDocument { (document, error) in
// Check for error
if error == nil {
// Check that this document exists
if document != nil && document!.exists {
let documentData = document!.data()
let postText = documentData?["post text"]
let postUser = documentData?["uid"]
Storage.storage().reference().child("posts").child("\(i)_post_image.png")
.getData(maxSize: 10*1024*1024, completion: {(data, error) -> Void in
if error != nil {
print("oh no, the following error occured: \(String(describing: error))")
} else {
let image : UIImage = UIImage(data: data!)!
//uid
db.collection("users")
.document(postUser as! String)
.getDocument { (document, error) in
// Check for error
if error == nil {
// Check that this document exists
if document != nil && document!.exists {
let documentData = document!.data()
let username = documentData?["username"]
let postImage = image
tempPosts.append(Post(image: postImage, username: username as! String, textcontent: postText as! String))
}}}
}})
}} else {
print(error)
}}
}
//let post1 = Post(image: #imageLiteral(resourceName: "BANNER.png"), username: "banncer", textcontent: "penis")
// let post2 = Post(image: #imageLiteral(resourceName: "BANNER.png"), username: "banncer", textcontent: "wenis")
// tempPosts.append(post1)
//tempPosts.append(post2)
return tempPosts
}
extension ProfileFeedViewController: UITableViewDataSource, UITableViewDelegate {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return posts.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let post = posts[indexPath.row]
let cell = tableView.dequeueReusableCell(withIdentifier: "posterCell") as! postCell
cell.setPost(post: post)
return cell
}
}