PFQuery:无法从解析数组获取objectId

交换伴侣

我正在为社交墙做类似的功能。当currentUser执行此操作时,会将消息中的objectId添加到User类的Array列中:

func likeBtnClick(sender: AnyObject){
    let senderbutton:UIButton = sender as UIButton
    println("current row is = \(senderbutton.tag)")

    let tempObject:PFObject = ImageTimeLineData.objectAtIndex(senderbutton.tag) as PFObject
    println("\(tempObject.objectId)")

    PFUser.currentUser().addUniqueObject(tempObject.objectId, forKey: "liked")
    PFUser.currentUser().saveInBackground()
}

这是您将在“喜欢的”数组中得到的结果:["q6begjrFE4","s63ehjxFA1"]

这一切都很好。现在,我想从中的一条消息中检索喜欢cellForRowAtIndexPath的数量,并在按钮中显示喜欢的数量:

    .....
    let message:PFObject = self.ImageTimeLineData.objectAtIndex(indexPath!.row) as PFObject

    .....

    var findLikes:PFQuery = PFUser.query()
    findLikes.whereKey("liked", equalTo: message.objectForKey("objectId"))
    findLikes.findObjectsInBackgroundWithBlock{
        (objects:[AnyObject]!, error:NSError!) -> Void in
        if error == nil{
            let liked:NSArray = objects as NSArray
            println(liked)
            println(liked.count)
            cell.likedButton.setTitle("\(liked.count)", forState: UIControlState.Normal)
        }
    }

    .....

    cell.likedButton.tag = indexPath!.row
    cell.likedButton.addTarget(self, action: "likeBtnClick:", forControlEvents: UIControlEvents.TouchUpInside)

    return cell

这会导致应用崩溃,因为它无法对null类型进行比较查询。我已经设置了异常断点,并来到这里:+[PFInternalUtils assertValidClassForQuery:]它在以下findLikes.whereKey("liked", equalTo: message.objectForKey("objectId"))崩溃:

#0  0x01833a6b in objc_exception_throw ()
#1  0x01bae86d in +[NSException raise:format:] ()
#2  0x00197f30 in +[PFInternalUtils assertValidClassForQuery:] at /Users/nlutsenko/src/parse/ios-client/Parse/Internal/PFInternalUtils.m:368
#3  0x001679d3 in -[PFQuery whereKey:equalTo:] at /Users/nlutsenko/src/parse/ios-client/Parse/PFQuery.m:195
#4  0x000cce00 in TongerenApp.ImageTimeLineTableViewController.tableView (TongerenApp.ImageTimeLineTableViewController)(Swift.Optional<ObjectiveC.UITableView>, cellForRowAtIndexPath : Swift.Optional<ObjectiveC.NSIndexPath>) -> ObjectiveC.UITableViewCell at /Users/Dax/Desktop/TongerenApp/TongerenApp/ImageTimeLineTableViewController.swift:130
#5  0x000cf143 in @objc TongerenApp.ImageTimeLineTableViewController.tableView (TongerenApp.ImageTimeLineTableViewController)(Swift.Optional<ObjectiveC.UITableView>, cellForRowAtIndexPath : Swift.Optional<ObjectiveC.NSIndexPath>) -> ObjectiveC.UITableViewCell ()
#6  0x022881bc in -[UITableView _createPreparedCellForGlobalRow:withIndexPath:willDisplay:] ()
#7  0x0228829e in -[UITableView _createPreparedCellForGlobalRow:willDisplay:] ()
#8  0x02261a6b in -[UITableView _updateVisibleCellsNow:isRecursive:] ()
#9  0x0227c3d1 in -[UITableView layoutSubviews] ()
#10 0x021f1dd1 in -[UIView(CALayerDelegate) layoutSublayersOfLayer:] ()
#11 0x01849771 in -[NSObject performSelector:withObject:] ()
#12 0x0074628f in -[CALayer layoutSublayers] ()
#13 0x0073a115 in CA::Layer::layout_if_needed(CA::Transaction*) ()
#14 0x00739f70 in CA::Layer::layout_and_display_if_needed(CA::Transaction*) ()
#15 0x006983c6 in CA::Context::commit_transaction(CA::Transaction*) ()
#16 0x0069978c in CA::Transaction::commit() ()
#17 0x00699e58 in CA::Transaction::observer_callback(__CFRunLoopObserver*, unsigned long, void*) ()
#18 0x01ad19de in __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ ()
#19 0x01ad1920 in __CFRunLoopDoObservers ()
#20 0x01ac735a in __CFRunLoopRun ()
#21 0x01ac6bcb in CFRunLoopRunSpecific ()
#22 0x01ac69fb in CFRunLoopRunInMode ()
#23 0x052da24f in GSEventRunModal ()
#24 0x052da08c in GSEventRun ()
#25 0x021668b6 in UIApplicationMain ()
#26 0x0010ff9e in top_level_code at /Users/Dax/Desktop/TongerenApp/TongerenApp/AppDelegate.swift:12
#27 0x0011008b in main ()
#28 0x03885ac9 in start ()

搜索后,我仍然不太明白这意味着什么。似乎查询是错误的。如何访问“喜欢的”数组并进行比较?

丹尼尔大帝

我的第一个猜测是,问题是:

message.objectForKey("objectId")

语法objectForKey可以与您创建的PFObjects的那些列一起使用,但是objectId是由Parse创建的。所以改为使用

message.objectId

,因为objectId被存储为PFObject的属性。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

PFQuery:无法从解析数组获取objectId

来自分类Dev

从PFQuery中的数组获取最后一个对象(解析)

来自分类Dev

如何从PARSE.com中的PFquery从NSArray获取objectId

来自分类Dev

iOS-解析-PFQuery无法正常工作

来自分类Dev

JSON解析无法从数组中获取价值

来自分类Dev

在解析中从用户获取objectId

来自分类Dev

如何从解析用户获取objectId?

来自分类Dev

解析PFQuery不返回类中所有对象的数组

来自分类Dev

MongoDB获取ObjectId数组的值

来自分类Dev

PFQuery返回空数组

来自分类Dev

无法解析JSON数组

来自分类Dev

解析PFQuery返回nil(swift)

来自分类Dev

解析整个关系中的PFQuery

来自分类Dev

解析PFQuery返回nil(swift)

来自分类Dev

如何在解析云代码中获取objectId?

来自分类Dev

如何在Javascript中处理ObjectId,无法解析

来自分类Dev

无法获取数组的长度

来自分类Dev

无法获取JSON数组

来自分类Dev

解析数组以获取所需数据

来自分类Dev

无法从Perl数组解析标量

来自分类Dev

无法正确解析JSON数组

来自分类Dev

SwiftyJSON无法解析JSON数组

来自分类Dev

Flutter - 无法解析 json 数组

来自分类Dev

无法从PFObject获取解析文件

来自分类Dev

无法解析JSON数组内的JSON数组

来自分类Dev

解析PFQuery包含键不起作用

来自分类Dev

解析PFQuery IOS返回用户名

来自分类Dev

解析PFQuery IOS返回用户名

来自分类Dev

解析PFQuery包含键不起作用