【问题标题】:Swift: Parse database doesn't update objectSwift:解析数据库不更新对象
【发布时间】:2017-04-20 18:10:39
【问题描述】:

我正在构建一个应用程序,我需要一个与数据库的连接。我为此使用 Parse(如果这很重要,则使用 back4app 托管它)。 我已经有很多 Parse 的经验,所以我遇到这个问题很奇怪。

所以我需要更新一个对象,但它没有。有人可以帮我吗?我在我的代码中添加了一个 print 并且它确实打印了,所以你知道应用程序在那里,但奇怪的是,它并没有更新对象。

提前致谢!

编辑:代码有效,因为当我在模拟器中运行应用程序时,它会更新,但当我在 iPhone 上运行它时,它不会?

func makeMessagesSeen() {
    let query = PFQuery(className: "Chat")
    query.whereKey("senderID", equalTo: otherID)
    query.whereKey("receiverID", equalTo: yourID)
    query.order(byDescending: "createdAt")
    var objects = try! query.findObjects()

    for i in objects {
        if (objects[0].objectId == i.objectId) {
            print("this will print , idk why code beneath this doesn't work?")
            i["messageSeen"] = "last seen"
            i.saveInBackground()
        }
        else {
            i["messageSeen"] = "seen"
            i.saveInBackground()
        }
    }
}

【问题讨论】:

  • 您是否尝试打印objects[0]i?它们可能为 NULL。另外,你确定query.findObjects() 没有阻塞你的主线程吗?
  • 它不是NULL,它也没有阻塞主线程。我找到了解决方案,这是我的一个严重错误,但我将解决方案发布为答案。感谢您的回复!

标签: swift database parse-platform


【解决方案1】:

我已修复它并将在此处发布解决方案,以防有人犯同样的错误。

所以我用我的模拟器创建了消息对象,并自动将每个人的写入权限设置为 false。仅对于创建消息的设备,它才设置为 true。所以这就是为什么我只能用我的模拟器更新对象。

因此,在您的数据库中将每个人的写入权限更改为 true。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-08
    • 2016-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多