Swift 如何返回单元格中的多个元素?

Swift 如何返回单元格中的多个元素?,swift,parse-platform,tableview,Swift,Parse Platform,Tableview,我想返回单元格的多个元素。我怎么做?这就是我正在研究的代码 // // TableViewControllerCompiti.swift // Secondo B // // Created by Edoardo on 23/12/15. // Copyright © 2015 ERC. All rights reserved. // import UIKit import Parse class TableViewControllerCompiti: UITableViewCont

我想返回单元格的多个元素。我怎么做?这就是我正在研究的代码

//
//  TableViewControllerCompiti.swift
//  Secondo B
//
//  Created by Edoardo on 23/12/15.
//  Copyright © 2015 ERC. All rights reserved.
//

import UIKit
import Parse

class TableViewControllerCompiti: UITableViewController {

var selfTable: NSMutableArray = NSMutableArray()

@IBOutlet var MessageTable: UITableView!
@IBOutlet weak var Compiti: UILabel!
@IBOutlet weak var DescrizioneCompiti: UITextView!
@IBOutlet weak var DataCompiti: UILabel!

var messagesArray: [String] = [String]()
var descriptionArray: [String] = [String]()
var dateArray: [String] = [String]()

override func viewDidLoad() {
    super.viewDidLoad()

    func retrieveMessages() {

        let query = PFQuery(className: "Compiti")

        query.findObjectsInBackgroundWithBlock {
            (remoteObjects: [PFObject]?, error: NSError?) -> Void in

            for messageObject in remoteObjects! {

                let messageText: String? = (messageObject as PFObject) ["Materia"] as? String
                let descriptionText: String? = (messageObject as PFObject) ["Compiti"] as? String
                let date: String? = (messageObject as PFObject) ["Data"] as? String

                if messageText != nil {

                    self.messagesArray.append(messageText!)

                }

                if descriptionText != nil {

                    self.descriptionArray.append(descriptionText!)

                }

                if date != nil {

                    self.dateArray.append(date!)

                }
            }

            self.MessageTable.reloadData()

        }
    }

    retrieveMessages()

}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
}

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    var cell = UITableViewCell?()
    cell = tableView.dequeueReusableCellWithIdentifier("cell")

    Compiti.text = self.messagesArray[indexPath.row]
    DataCompiti.text = self.dateArray[indexPath.row]
    DescrizioneCompiti.text = self.descriptionArray[indexPath.row]

    if cell == nil {
            cell = UITableViewCell(style: UITableViewCellStyle.Value1, reuseIdentifier: "ReUseCell")
        }

    return cell!
}

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

    return self.messagesArray.count
    }
}

当我运行它时,模拟器只返回一堆空单元格。如何返回元素?

代码中的备注:

  • 您不能在viewDidLoad()内部实现和调用函数,您实现生命周期之外的所有函数/方法,然后在内部调用

  • 我认为使用三个不同的数组来包含数据不是一个好主意,您应该学习
    struct
    class
    数据结构来对数据进行分组,因为您从同一个类中获取数据

    struct myDataContainer
    {
        var message:String?
        var descriptionText:String?
        var date:String?
    }
    
     var arrayOfContainers = [myDataContainer]()  //<-- this will be your new array
    
    struct myDataContainer
    {
    var消息:字符串?
    变量descriptionText:字符串?
    变量日期:字符串?
    }
    
    var arrayOfContainers=[myDataContainer]()//您有多少个原型单元?它们的可重用标识符是什么?您是否有用于单元格的自定义类?另外,您不应该在
    viewdiload
    中有函数,因为我正在从Parse获取信息,所以单元格的数量取决于Parse数据库中的行数。它们的可重用标识符是
    单元
    。不,我没有任何自定义类@阿拉法特
    Compti
    descriptionecompiti
    DataCompiti
    是否是原型单元中的组件?首先,您应该创建一个自定义的
    tableViewCell
    ,并将插座连接到您创建的自定义单元格,而不是在viewcontroller上。返回行数时,
    self.messagesArray.count
    的值是多少?(你最好有一个对象数组,每个对象包含三个字符串,而不是三个字符串数组。想象一下,如果你收到的消息文本没有匹配的描述,会发生什么!)你能告诉我(在回答中)我该怎么做吗@PhillipMills此代码给了我一个
    线程1:断点1.1
    错误。我做错了什么@拉玛尔他们的问题是“拉玛尔是最后一幅图像”拉玛尔
          class CustomizeCell :UITableViewCell
          {
                @IBOutlet weak var Compiti: UILabel!
                @IBOutlet weak var DescrizioneCompiti: UITextView!
                 @IBOutlet weak var DataCompiti: UILabel!
    
          } //<--- Subclass of UITableViewCell above
    
    
          struct myDataContainer
            {
               var message:String?
               var descriptionText:String?
               var date:String?
            }
    
    class TableViewControllerCompiti: UITableViewController {
    
    
    
    var arrayOfContainers = [myDataContainer]()  //<-- this will be your new array
    
    
    override func viewDidLoad()
    {
        super.viewDidLoad()
        retrieveMessages()   //<--- call function
    }
    
    func retrieveMessages()
    {
        var objectT = myDataContainer()
        let query = PFQuery(className: "Compiti")
        query.findObjectsInBackgroundWithBlock {(objects: [PFObject]?, error: NSError?) -> Void in
    
            if let remoteObjects = objects
            {
                for messageObject in remoteObjects
                {
                    let messageText = messageObject["Materia"]  as? String
                    let description = messageObject["Compiti"]  as? String
                    let date        = messageObject["Data"]     as? String
    
                        objectT.message = messageText!
                        objectT.descriptionText = description!
                        objectT.date = date!
    
                        self.arrayOfContainers.append(objectT)
    
                }
                self.tableView.reloadData()
            }
        }
    }
    
    
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    
        let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! CustomizeCell
        // as! CustomizeCell technically speaking make sure that we access our customize cell
    
        let data = self.arrayOfContainers[indexPath.row]
        cell.Compiti.text = data.message
        cell.DataCompiti.text = data.descriptionText
        cell.DescrizioneCompiti.text = data.date
    
        return cell
    }
    
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return self.arrayOfContainers.count
         }
       }