gpt4 book ai didi

swift - Parse & Xcode 6.4 使用 Swift 1.2 展开选项时出现问题

转载 作者:行者123 更新时间:2023-11-30 14:13:58 25 4
gpt4 key购买 nike

升级到 xcode 6.4 后,我在打开 optional 时遇到问题。这是我在运行这行代码时遇到的错误:

query.whereKey("follower", equalTo: PFUser.currentUser()!.objectId!)

fatal error: unexpectedly found nil while unwrapping an Optional value (lldb)

我知道随着 xcode 的新更新,您必须更加小心地展开选项,但我不确定我需要做出哪些更改才能快速合作。我已经尝试了 S/O 上建议的许多不同方法,但还没有一种方法可以工作。这是我的完整代码:

谢谢!!

import UIKit
import Parse

class TableViewController: UITableViewController {

var usernames = [""]
var userids = [""]
var isFollowing = ["":false]

override func viewDidLoad() {
super.viewDidLoad()

var query = PFUser.query()

query?.findObjectsInBackgroundWithBlock({ (objects, error) -> Void in

if let users = objects {

self.usernames.removeAll(keepCapacity: true)
self.userids.removeAll(keepCapacity: true)
self.isFollowing.removeAll(keepCapacity: true)

for object in users {

if let user = object as? PFUser {

if user.objectId! != PFUser.currentUser()?.objectId {

self.usernames.append(user.username!)
self.userids.append(user.objectId!)

var query = PFQuery(className: "followers")

***query.whereKey("follower", equalTo: PFUser.currentUser()!.objectId!)***
query.whereKey("following", equalTo: user.objectId!)

query.findObjectsInBackgroundWithBlock({ (objects, error) -> Void in

if let objects = objects {

if objects.count > 0 {

self.isFollowing[user.objectId!] = true

} else {

self.isFollowing[user.objectId!] = false

}
}

if self.isFollowing.count == self.usernames.count {

self.tableView.reloadData()

}


})



}
}

}



}



})


}

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 Potentially incomplete method implementation.
// Return the number of sections.
return 1
}

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


override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! UITableViewCell

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

let followedObjectId = userids[indexPath.row]

if isFollowing[followedObjectId] == true {

cell.accessoryType = UITableViewCellAccessoryType.Checkmark

}


return cell
}


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

var cell:UITableViewCell = tableView.cellForRowAtIndexPath(indexPath)!

let followedObjectId = userids[indexPath.row]

if isFollowing[followedObjectId] == false {

isFollowing[followedObjectId] = true

cell.accessoryType = UITableViewCellAccessoryType.Checkmark

var following = PFObject(className: "followers")
following["following"] = userids[indexPath.row]
following["follower"] = PFUser.currentUser()?.objectId

following.saveInBackground()

} else {

isFollowing[followedObjectId] = false

cell.accessoryType = UITableViewCellAccessoryType.None

var query = PFQuery(className: "followers")

query.whereKey("follower", equalTo: PFUser.currentUser()!.objectId!)
query.whereKey("following", equalTo: userids[indexPath.row])

query.findObjectsInBackgroundWithBlock({ (objects, error) -> Void in

if let objects = objects {

for object in objects {

object.deleteInBackground()

}
}


})



}

}
}

最佳答案

您可以使用Optional Binding来访问登录用户,以确保在将其用作查询参数之前它不是nil

所以你应该改变这一行:

query.whereKey("follower", equalTo: PFUser.currentUser()!.objectId!)

与:

if let userObj = PFUser.currentUser()?.objectId {
query.whereKey("follower", equalTo: userObj)
}
<小时/>

现在这将解决您的错误并防止您的应用程序崩溃,但也许您应该以某种方式重组您的应用程序,以确认用户在到达此 UITableViewController 时无论如何都已登录。

无论如何,您仍然应该使用可选绑定(bind)来防止潜在的崩溃。

关于swift - Parse & Xcode 6.4 使用 Swift 1.2 展开选项时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31414431/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com