Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 尝试使用swift上传以解析我对每个图像的投票_Ios_Swift_Parse Platform - Fatal编程技术网

Ios 尝试使用swift上传以解析我对每个图像的投票

Ios 尝试使用swift上传以解析我对每个图像的投票,ios,swift,parse-platform,Ios,Swift,Parse Platform,我正在制作一个应用程序,它有一个图像的桌面视图,可以通过向右或向左滑动来进行上移或下移。我试图有投票被登录到后端解析,同时我希望投票出现在每个单元格。我添加了一个voteCounter来计算选票,但不是针对特定的图像,而是在每个图像上显示相同的计数。如何停止此操作并使每个图像都有自己的投票,以及如何将其保存到parse的后端? 以下是我目前的代码: class HomePage: UITableViewController { var images = [UIImage]() var titl

我正在制作一个应用程序,它有一个图像的桌面视图,可以通过向右或向左滑动来进行上移或下移。我试图有投票被登录到后端解析,同时我希望投票出现在每个单元格。我添加了一个voteCounter来计算选票,但不是针对特定的图像,而是在每个图像上显示相同的计数。如何停止此操作并使每个图像都有自己的投票,以及如何将其保存到parse的后端? 以下是我目前的代码:

class HomePage: UITableViewController {

var images = [UIImage]()
var titles = [String]()
var imageFile = [PFFile]()
var voteCounter = 0




   override func viewDidLoad() {
    super.viewDidLoad()

    println(PFUser.currentUser())

    var query = PFQuery(className:"Post")

    query.orderByDescending("createdAt")
    query.findObjectsInBackgroundWithBlock {(objects: [AnyObject]?, error: NSError?) -> Void in
        if error == nil {

            println("Successfully retrieved \(objects!.count) scores.")

            for object in objects! {

                self.titles.append(object["Title"] as! String)

                self.imageFile.append(object["imageFile"] as! PFFile)

                self.tableView.reloadData()

            }
        } else {
            // Log details of the failure
            println(error)
        }
    }

}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    return 1
}

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

    return titles.count


}
override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
    return 500

}

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

    var myCell:cell = self.tableView.dequeueReusableCellWithIdentifier("myCell") as! cell

    myCell.rank.text = "21"
    myCell.votes.text = "\(voteCounter)"
    myCell.postDescription.text = titles[indexPath.row]

    imageFile[indexPath.row].getDataInBackgroundWithBlock { (data, error) -> Void in

        if let downloadedImage = UIImage(data: data!) {

            myCell.postedImage.image = downloadedImage

        }
    }

    var swipeRight = UISwipeGestureRecognizer(target: self, action: "respondToSwipeGesture:")
    swipeRight.direction = UISwipeGestureRecognizerDirection.Right
    myCell.postedImage.userInteractionEnabled = true;
    myCell.postedImage.addGestureRecognizer(swipeRight)


    var swipeLeft = UISwipeGestureRecognizer(target: self, action: "respondToSwipeGesture:")
    swipeRight.direction = UISwipeGestureRecognizerDirection.Left
    myCell.postedImage.userInteractionEnabled = true;
    myCell.postedImage.addGestureRecognizer(swipeLeft)

    return myCell

}


func respondToSwipeGesture(gesture: UIGestureRecognizer) {

        if let swipeGesture = gesture as? UISwipeGestureRecognizer {

            switch swipeGesture.direction {
            case UISwipeGestureRecognizerDirection.Right:
                voteCounter += 1
                println("Swiped right")
            case UISwipeGestureRecognizerDirection.Left:
                voteCounter -= 1
                println("Swiped Left")
            default:
                break
            }
        }
    }

}

不要使用所有不同的数组,只需保留
PFObjects的数组,并直接使用它们即可。此对象还应将投票计数作为其列之一,以便在下载时获得计数。所以你也不需要你的投票计数器

您还应该查看如何使用
PFImageView
显示图像。或者你自己缓存下载的图像


要更新计票,您应该使用
PFObject

提供的对象。首先,您使用不同的图片,就我而言,我更喜欢使用tableView的单个表格。 表中的每个元素都对应一行TableView,如下所示: 注意:您必须按照自己的意愿重新排列代码

class HomePage: UITableViewController {

    var dataTab : [FPObject] : []

    override func viewDidLoad() {
        super.viewDidLoad()

        //Init your data array for tableView
        println(PFUser.currentUser())
        var query = PFQuery(className:"Post")
        query.orderByDescending("createdAt")
        query.findObjectsInBackgroundWithBlock {(objects: [AnyObject]?, error: NSError?) -> Void in
            if error == nil {
                println("Successfully retrieved \(objects!.count) scores.")
                for object in objects! {
                    self.dataTab.append(object)
                    self.tableView.reloadData()
                }
            } else {
                // Log details of the failure
                println(error)
            }
        }

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        return 1
    }

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return self.dataTab.count
    }
    override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
        return 500
    }

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

        //Get Object at IndexPath.row in  dataArray for tableView
        let rowObject = self.dataTab[indexPath.row]

        let rank = rowObject["rank"]
        let votes = rowObject["votes"]
        let description = rowObject["Title"]

        myCell.rank.text = rank
        myCell.votes.text = votes
        myCell.postDescription.text = description


        //Asynchrone task
        rowObject["imageFile"].getDataInBackgroundWithBlock { (data, error) -> Void in
            if let downloadedImage = UIImage(data: data!) {
                //When download success -- reload tableview to update cells
                myCell.postedImage.image = downloadedImage
                self.tableView.reloadData()
            }
        }

        return myCell
    }

    //ACTION WHEN EDIT CELL TABLEVIEW -- Look differents screens
    func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [AnyObject]? {

        var upAction = UITableViewRowAction(style: .Default, title: "UP") { (action, indexPath) -> Void in
            //Get object at index
            let updateObject = self.dataTab[indexPath.row]

            //Update data tableview // Increment vote
            self.dataTab[indexPath.row]["vote"] = updateObject["vote"] + 1

            //UPDATE data in Parse.com
            let objectId = updateObject["objectId"]
            var query = PFQuery(className:"Post")
            query.getObjectInBackgroundWithId(objectId) {
                (postObject: PFObject?, error: NSError?) -> Void in
                if error != nil {
                    println(error)
                } else if let postObject = postObject {
                    postObject["vote"] = postObject["vote"] + 1
                    postObject.saveInBackground()
                }
            }

            //Reload tableview cells
            self.tableView.reloadData()
        }
        upAction.backgroundColor = UIColor.greenColor()

        var downAction = UITableViewRowAction(style: .Default, title: "DOWN") { (action, indexPath) -> Void in
            //Get object at index
            let updateObject = self.dataTab[indexPath.row]

            //Update data tableview // Increment vote
            self.dataTab[indexPath.row]["vote"] = updateObject["vote"] - 1

            //UPDATE data in Parse.com
            let objectId = updateObject["objectId"]
            var query = PFQuery(className:"Post")
            query.getObjectInBackgroundWithId(objectId) {
                (postObject: PFObject?, error: NSError?) -> Void in
                if error != nil {
                    println(error)
                } else if let postObject = postObject {
                    postObject["vote"] = postObject["vote"] - 1
                    postObject.saveInBackground()
                }
            }

            //Reload tableview cells
            self.tableView.reloadData()
        }

        return [upAction, downAction,]
    }
}
如果要使用此选项,请将屏幕结果设置为upvote和downvote

我希望我帮助过你


Yée

如何将其添加到PFObject中?关于这张照片,你能详细说明一下吗?计票?添加一个数字列。看起来您目前没有任何地方可以存储计数。先把选票分类,然后考虑使图像处理更有效率。非常感谢这一点,但是我想我想保持喜欢和不喜欢的特性。我肯定会使用其中的一些代码,我真的非常感谢您的帮助