【问题标题】:Load dictionary with objectID and data from Parse in Swift在 Swift 中使用 Parse 中的 objectID 和数据加载字典
【发布时间】:2018-01-14 00:50:16
【问题描述】:

我正在将数据从 Parse 提取到一个数组中,但需要一种方法来直接引用该特定对象以更改服务器上的数据(例如:从应用程序中删除特定条目并在服务器上将其删除) .以前我使用的是一个填充有 PFQuery 的数组,该数组用于下拉数据,但不能用于备份更改。我认为用 [objectID : string of data required] 创建一个字典会起作用,因此当前数组中的每个数据集总是直接与其标识符配对。我的问题是将两组数据(objectID 和数据字符串)拉下来并在字典中匹配它们。有什么建议或帮助吗?

我将原始数组更改为 cellContent 变量中的字典,但其他代码仍为数组设置。

谢谢!

import UIKit
import Parse

var segueWorker = ""

class MyWorkersViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

    var cellContent = [String: String]()


    @IBAction func backButton(_ sender: Any) {

        navigationController?.popViewController(animated: true)

        performSegue(withIdentifier: "workersToMyFarm", sender: self)

    }

    @IBOutlet weak var tableView: UITableView!


    internal func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

        return cellContent.count

    }




    internal func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

        let cell = UITableViewCell(style: UITableViewCellStyle.default, reuseIdentifier: "Cell")

        cell.textLabel?.text = cellContent[indexPath.row]

        return cell

    }

    override func viewDidAppear(_ animated: Bool) {


        // Do any additional setup after loading the view.

        self.cellContent.removeAll()

        let query = PFQuery(className: "Workers")

        query.findObjectsInBackground(block: { (objects1, error) in

            if error != nil {

                print(error!)

            } else {

                query.whereKey("username", equalTo: PFUser.current()?.username)

                query.findObjectsInBackground(block: { (objects2, error) in

                    for object in objects2! {

                        self.cellContent.append(object["workerName"] as! String)

                        self.cellContent.sort()

                        self.tableView.reloadData()

                        }

                    }

                )}

            }

        )}

    func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {

        if editingStyle == UITableViewCellEditingStyle.delete {

            cellContent.remove(at: indexPath.row)

            tableView.reloadData()


        }




    }

    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

        let indexPath = tableView.indexPathForSelectedRow

        let currentCell = tableView.cellForRow(at: indexPath!)!

        segueWorker = (currentCell.textLabel!.text!)

        performSegue(withIdentifier: "toAddWorkers", sender: self)

    }



    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}

【问题讨论】:

    标签: arrays swift dictionary parse-platform


    【解决方案1】:

    进行了一些修改,但最终通过分散变量并在创建所有变量后最终构建字典来使其工作。此外,从 Parse 获取 objectId 时遇到了很多麻烦,但似乎只需调用 object.objectId 即可。

    以下代码供参考:

    self.cellContent.removeAll()
    
    let query = PFQuery(className: "Workers")
    
    query.findObjectsInBackground(block: { (objects1, error) in
    
        if error != nil {
    
            print(error!)
    
        } else {
    
                    query.whereKey("username", equalTo: PFUser.current()?.username)
    
                    query.findObjectsInBackground(block: { (objects2, error) in
    
                        for object in objects2! {
    
                            self.cellContent.append(object["workerName"] as! String)
    
    
                            // Needs to be objectId
    
                            let objectKey = object.objectId
    
                            let objectValue = object["workerName"] as! String
    
                            self.cellContentDict[objectKey!] = objectValue
    
                            print(self.cellContentDict)
    
                            self.cellContent.sort()
    
                    self.tableView.reloadData()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-17
      • 1970-01-01
      相关资源
      最近更新 更多