SWIFT:Parse列没有附加到数组中

时间:2015-11-04 17:03:17

标签: ios swift parse-platform

我想使用Swift将以下解析表中的'userVotes'列附加到数组中 -

enter image description here

这是我的代码 -

import UIKit
import Parse

class MusicPlaylistTableViewController: UITableViewController {

var usernames = [String]()
var songs = [String]()
var voters = [String]()

var numVotes = 0

override func viewDidLoad() {
    super.viewDidLoad()

    tableView.separatorColor = UIColor.grayColor()

    let query = PFQuery(className:"PlaylistData")
    query.findObjectsInBackgroundWithBlock { (objects: [PFObject]?, error: NSError?) -> Void in

        if error == nil {

            if let objects = objects! as? [PFObject] {

                self.usernames.removeAll()
                self.songs.removeAll()
                self.voters.removeAll()

                for object in objects {

                    let username = object["username"] as? String
                    self.usernames.append(username!)

                    let track = object["song"] as? String
                    self.songs.append(track!)

                    let title = object["userVotes"]! as? String
                    self.voters.append(title!)
                    print("Array: \(self.voters)")

                }

                self.tableView.reloadData()
            }

        } else {

            print(error)
        }
    }


}

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

// MARK: - Table view data source

override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    // #warning Incomplete implementation, return the number of sections
    return 1

}

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    // #warning Incomplete implementation, return the number of rows
    return usernames.count
}

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

    let cell = tableView.dequeueReusableCellWithIdentifier("CellTrack", forIndexPath: indexPath) as! TrackTableViewCell

    //cell.username.text = usernames[indexPath.row]
    cell.username.text = usernames[indexPath.row]
    cell.songTitle.text = songs[indexPath.row]
    cell.votes.text = "\(numVotes)"

    cell.selectionStyle = UITableViewCellSelectionStyle.None
    return cell
}

override func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath) {



}


}

我想将parse数组列追加如下 - [[ “用户1,” USER5 “USER9”],[ “用户1,” 用户2 “用户3”],[ “USER4,” USER5 “user6”],...]

此时,我收到以下运行时错误 - 致命错误:在解包可选值时意外发现nil

1 个答案:

答案 0 :(得分:2)

由于" userVotes"中的每个对象都存在。是一个数组,你已经宣布

var voters = [String]()

这是不正确的,因为你说有一个元素被追加,但事实并非如此。

所以,你应该宣布选民为......

var voters = Array<Array<String>>()

然后当你下载它时,

for object in objects {
    let title = object["userVotes"]! as? [String]
    self.voters.append(title!)
    print("Array: \(self.voters)")
}