【问题标题】:Parse Platform iOS. Unable to add relation解析平台 iOS。无法添加关系
【发布时间】:2021-08-01 01:13:15
【问题描述】:

我有两个解析类,它们之间有关系:

class FeedPost:PFObject, PFSubclassing {
    @NSManaged var likedBy:PFRelation<PFUser>
    static func parseClassName() -> String {
        return "FeedPost"
    }
}

extension PFUser {
    @NSManaged var likedPosts:PFRelation<FeedPost>
}

当用户喜欢具有以下代码的帖子时,我正在尝试在两个对象之间创建关系:

    if let currentUser = PFUser.current() {
        let likeQuery = post.likedBy.query()
        likeQuery.findObjectsInBackground { (users, error) in
            if let users = users {
                if !users.contains(where: {$0.objectId == currentUser.objectId}) {
                    post.likeCount += 1
                    post.likedBy.add(currentUser)
                    currentUser.likedPosts.add(post)
                    ParseNetworkQuery.shared.bulkSaveObjects(objects: [currentUser,post]) { (done) in
                            
                    }
                }
            }
        }
    }

当我运行此代码时,我收到以下错误:

Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)

错误指向 PFRelation.m 文件中的以下行,特别是 dispatch_sync 行:

- (void)_addKnownObject:(PFObject *)object {
dispatch_sync(_stateAccessQueue, ^{
    [self.state.knownObjects addObject:object];
});
}

我已经尝试在数据浏览器中将关系“预添加”到两个类。完成后会发生错误。如果我删除数据浏览器中的关系,并让代码在运行时自行生成它们,则不会发生任何事情。未创建列,并且“likeQuery”永远不会执行。我究竟做错了什么?谢谢!

【问题讨论】:

  • likeCount 更新了吗?
  • 不,这两种情况都没有。

标签: swift parse-platform


【解决方案1】:

这是我的代码,终于可以正常工作了。看来我必须使用关系(forKey: ),因为直接从对象中获取关系从未奏效。

if let currentUser = PFUser.current() {
        let likedByRelation = self.relation(forKey: "likedBy")
        let query = likedByRelation.query()
        if let objectId = currentUser.objectId {
            query.whereKey("objectId", equalTo: objectId)
            query.getFirstObjectInBackground { (object, error) in
                if object == nil {
                    view.showAlert(title: "Already Liked", message: "You've already liked this post.")
                } else {
                    self.likeCount += 1
                    likedByRelation.add(currentUser)
                    self.saveInBackground { (success, error) in
                        completion()
                    }
                }
            }
        }
    }

【讨论】:

    猜你喜欢
    • 2020-10-30
    • 1970-01-01
    • 2015-08-22
    • 2022-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多