我试图将我的数组中的随机值调用到我的查询中,其中显示" objectId "但我收到"EXC_BAD_INSTRUCTION"
的错误let votes = voteCount1["votes"] as Int
。它低于我的IBAction
功能addVote1
。
我哪里错了?我试图检索每个变量的值,这些变量都在我的Parse数据控制器中的某一行内(每个变量都有一个特定的objectId),然后对该行中的相应变量发送投票,但是我是得到一个错误。我没有得到错误的唯一方法是,如果我专门定义objectId代替它所说的位置" objectId "在query.getObjectInBackgroundWithId("objectId")
。我哪里可能出错?
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
var voteCount1 = PFObject(className: "VoteCount")
voteCount1["choices"] = 2
voteCount1["votes"] = Int()
voteCount1["votes2"] = Int()
voteCount1["optionName"] = String()
voteCount1["optionName2"] = String()
var voteCount2 = PFObject(className: "VoteCount2")
voteCount2["choices"] = 3
voteCount2["votes"] = Int()
voteCount2["votes2"] = Int()
voteCount2["votes3"] = Int()
voteCount2["optionName"] = String()
voteCount2["optionName2"] = String()
voteCount2["optionName3"] = String()
var voteCount3 = PFObject(className: "VoteCount3")
voteCount3["choices"] = 4
voteCount3["votes"] = Int()
voteCount3["votes2"] = Int()
voteCount3["votes3"] = Int()
voteCount3["votes4"] = Int()
voteCount3["optionName"] = String()
voteCount3["optionName2"] = String()
voteCount3["optionName3"] = String()
voteCount3["optionName4"] = String()
let array = ["BiEM17uUYT", "TtKGatVCi9"]
let randomIndex = Int(arc4random_uniform(UInt32(array.count)))
let objectId = array[randomIndex]
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBOutlet weak var pollResults1: UILabel!
@IBAction func addVote1(sender: AnyObject) {
var query = PFQuery(className: "VoteCount")
query.getObjectInBackgroundWithId("objectId") {
(voteCount1: PFObject!, error: NSError!) -> Void in
if error != nil {
NSLog("%@", error)
} else {
voteCount1.incrementKey("votes")
voteCount1.saveInBackgroundWithTarget(nil, selector: nil)
}
let votes = voteCount1["votes"] as Int
let votes2 = voteCount1["votes2"] as Int
self.pollResults1.text = "\(votes)"
}
}
}
答案 0 :(得分:0)
我在viewDidLoad
中看到你定义了一些对象,将它们存储在局部变量中,并且当方法结束时它们的值会丢失。因此,他们不会以任何方式对查询和应该在解析数据库中的数据做出贡献。
那就是说,我希望对getObjectInBackgroundWithId
的调用不返回匹配,并且voteCount1
闭包参数为nil。
如果发生这种情况,您应该会在控制台上看到错误消息。
因此,异常发生是因为您正在访问包含voteCount1
的{{1}}变量。您应该在nil
分支中移动该代码:
else
但我认为你的代码逻辑中存在其他一些错误,这是基于我在这个答案开始时所做的考虑。