2017-04-20 28 views
0

我正在構建一個應用程序,我需要一個與數據庫的連接。我爲此使用了Parse(並且如果這很重要,則將其與back4app一起託管)。 我已經有很多Parse的經驗,所以我有這個問題很奇怪。Swift:解析數據庫不更新對象

所以我需要更新一個對象,但它沒有。有人可以幫我嗎?我在我的代碼中放了一個打印文件,它打印出來讓你知道應用程序在那裏,但奇怪的是,它並沒有更新對象。

在此先感謝!

編輯:代碼的作品,因爲當我在模擬器中運行的應用程序更新,但是當我在我的iPhone上運行它,它does not't?

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() 
     } 
    } 
} 
+0

您是否嘗試過打印'objects [0]'和'i'?它們可能是NULL。另外,你確定'query.findObjects()'沒有阻塞你的主線程嗎? –

+0

它不是NULL,它也沒有阻塞主線程。我找到了解決方案,這是我犯的一個嚴重錯誤,但我發佈瞭解決方案作爲答案。感謝您的回覆 ! – MaximVW

回答

0

我修正了它,並會在這裏發佈解決方案,以防萬一有人犯同樣的錯誤。

所以我創建了消息對象與我的模擬器和解析自動將每個人的寫訪問設置爲false。只有創建該消息的設備被設置爲true。所以這就是爲什麼我只能更新到模擬器對象。

因此,改變你的數據庫的寫訪問爲每個人爲真。