【问题标题】:Receiving strings, numbers, and images from Parse Sever and adding them to local arrays从 Parse Sever 接收字符串、数字和图像并将它们添加到本地数组
【发布时间】:2020-02-13 14:48:11
【问题描述】:

我是编码新手,我正在尝试从解析服务器定位、检索和附加值到本地数组。通过查询,我能够成功检索所有信息并将其附加到 ViewDidLoad() 在我的 for in 循环中中的数组中。但是,当我在运行查询 & for in 循环后打印数组的项目时,我的数组都包含 nil,而不是之前添加的值。

  override func viewDidLoad() {
   query.whereKey("Bar", equalTo: BarText!)
    query.findObjectsInBackground(block: { (objects,error) -> Void in
        if error == nil {
        if let returnedobjects = objects {
            for object in returnedobjects {
                let postImageFile = object["PostImage"] as? PFFileObject

                postImageFile?.getDataInBackground(block: { (imageData: Data?, error: Error?) in
                    if error == nil {
                        self.PickedBarImagePostArray.append(UIImage(data: imageData!)!)
                    } else {
                        print("nothing")
                    }
                })
                let userProfilePicFile = object["ProfileImage"] as?
                PFFileObject
                userProfilePicFile?.getDataInBackground(block: { (imageData: Data?, error: Error?) in
                    if error == nil {
                        self.PickedBarPostProfileImageArray.append(UIImage(data: imageData!)!)
                    } else {
                        print("nothing")
                    }
                })

                self.PickedBarPostLikesArray.append((object["Likes"] as? Int)!)
                self.PickedBarPostUsernameArray.append((object["Username"] as? String)!)
                self.PickedBarPostTimeArray.append((object["UserTime"] as? String)!)
                self.PickedBarChekcedInArray.append((object["Checked"]as? String)!)
                self.PickedBarContentPostArray.append((object["ContentPost"] as? String)!)
                self.PickedBarPostArray.append((object["PostType"] as? String)!)
                print(self.PickedBarPostLikesArray)
                print(self.PickedBarPostUsernameArray)
                print(self.PickedBarPostTimeArray)
                print(self.PickedBarChekcedInArray)
                print(self.PickedBarContentPostArray)
                print(self.PickedBarPostArray)
            }
        }
    }
})
    print(self.PickedBarPostLikesArray)
    print(self.PickedBarPostUsernameArray)
    print(self.PickedBarPostTimeArray)
    print(self.PickedBarChekcedInArray)
    print(self.PickedBarContentPostArray)
    print(self.PickedBarPostArray)
    self.BarSelectedTableView.reloadData()

}

我在控制台中得到了这个:

[]

[]

[]

[]

[]

[10]

[“麦哲伦”]

[“下午 5 点 59 分”]

["\"\""]

["\"\""]

This is my Parse Server

【问题讨论】:

    标签: ios arrays swift uitableview parse-platform


    【解决方案1】:

    所以我通过创建一个名为“刷新”的按钮来实现它。一切正常。但是,我想让信息在初始视图中填充数组,而不是按下按钮。谁能解释一下为什么会这样?

    【讨论】:

    • 我可能想用代码为此打开一个新问题。
    【解决方案2】:

    您的重新加载代码在完成关闭之前被调用。 将重载代码放入闭包中 试试这个

     override func viewDidLoad() {
     query.whereKey("Bar", equalTo: BarText!)
    query.findObjectsInBackground(block: { (objects,error) -> Void in
        if error == nil {
        if let returnedobjects = objects {
            for object in returnedobjects {
                let postImageFile = object["PostImage"] as? PFFileObject
    
                postImageFile?.getDataInBackground(block: { (imageData: Data?, error: Error?) in
                    if error == nil {
                        self.PickedBarImagePostArray.append(UIImage(data: imageData!)!)
                    } else {
                        print("nothing")
                    }
                })
                let userProfilePicFile = object["ProfileImage"] as?
                PFFileObject
                userProfilePicFile?.getDataInBackground(block: { (imageData: Data?, error: Error?) in
                    if error == nil {
                        self.PickedBarPostProfileImageArray.append(UIImage(data: imageData!)!)
                    } else {
                        print("nothing")
                    }
                })
    
                self.PickedBarPostLikesArray.append((object["Likes"] as? Int)!)
                self.PickedBarPostUsernameArray.append((object["Username"] as? String)!)
                self.PickedBarPostTimeArray.append((object["UserTime"] as? String)!)
                self.PickedBarChekcedInArray.append((object["Checked"]as? String)!)
                self.PickedBarContentPostArray.append((object["ContentPost"] as? String)!)
                self.PickedBarPostArray.append((object["PostType"] as? String)!)
    
               self.Reload()
    
            }
        }
    }
    
     })
    
    
    
    }
    
      func Reload(){
    
       self.BarSelectedTableView.reloadData()
      print(self.PickedBarPostLikesArray)
    print(self.PickedBarPostUsernameArray)
    print(self.PickedBarPostTimeArray)
    print(self.PickedBarChekcedInArray)
    print(self.PickedBarContentPostArray)
    print(self.PickedBarPostArray)
    
    
      } 
    

    【讨论】:

      【解决方案3】:

      这是因为在完成关闭之前调用了重新加载代码。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-01-09
        • 2018-01-01
        • 1970-01-01
        • 2021-01-10
        • 2018-07-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多