在Swift中加载带有objectID和数据的字典

问题描述:

我将Parse中的数据拖入数组,但需要一种方法来直接引用该特定对象以更改服务器上的数据(例如:删除特定条目该应用程序并在服务器上删除它)。以前我使用的是一个填充了PFQuery的数组,这个数组可以用来拉取数据,但不能用于更改备份。我认为创建一个[objectID:所需数据字符串]的字典可以工作,因此当前在数组中的每个数据集都将直接与它的标识符配对。我的问题是拉下两组数据(objectID和数据字符串),并将它们匹配在字典中。任何建议或帮助?在Swift中加载带有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. 
    } 


} 

采取了一些修修补补,但终于得到它通过散布出来的变量,最终建立字典我曾有创建的所有变量工作。另外,在从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()