ParseSwift 未将 Int 保存到列 - undefined

ParseSwift not Saving Int to Column - undefined

提问人:C0D3 提问时间:7/27/2023 最后编辑:halferC0D3 更新时间:8/13/2023 访问量:37

问:

我有一个简单的GameScore对象,如文档(https://github.com/parse-community/Parse-Swift/blob/main/ParseSwift.playground/Pages/1%20-%20Your%20first%20Object.xcplaygroundpage/Contents.swift)

import Foundation
import ParseSwift

struct GameScore: ParseObject {
    var objectId: String?
    var createdAt: Date?
    var updatedAt: Date?
    var ACL: ParseACL?
    var originalData: Data?


    // Your own properties
    var score: Int?
    var name: String?

    func merge(with object: Self) throws -> Self {
        var updated = try mergeParse(with: object)
        if updated.shouldRestoreKey(\.score, original: object) {
            updated.score = object.score
        }
        if updated.shouldRestoreKey(\.name, original: object) {
            updated.name = object.name
        }
        return updated
    }
}
extension GameScore {

    init(score: Int) {
        self.score = score
    }

    init(score: Int, name: String) {
        self.score = score
        self.name = name
    }

    init(objectId: String?) {
        self.objectId = objectId
    }
}

然后,我通过调用以下函数将 GameScore 对象保存到服务器:

func createScore() {
    var score = GameScore(score: Int(scoreScore), name: scoreName)
    score.score = Int(scoreScore)
    score.save { [weak self] result in
        switch result {
        case .success(let savedScore):
            score = savedScore
            self?.gameScore = savedScore
            self?.fetchGameScores()
            print("savedScore - score: \(score.score ?? 0), name: \(score.name ?? "")")
        case .failure(let error):
            print("save error: \(error.localizedDescription)")
        }
    }
}

现在,当我将此对象保存到 Parse 服务器时,它会保存它,但属性始终未定义。我做错了什么?我还尝试将属性递增,例如,increment() 操作按预期工作,分数变为 1。但它从不接受我设置分数的初始值。scorescore

这应该非常简单易行,但它不起作用,我不明白为什么。

注意:我使用的是 ParseSwift 库,而不是 Obj-C 中的标准 Parse iOS SDK

更新

当我在保存函数回调块中放置断点时,我确实看到 savedScore 在:

case .success(let savedScore)确实有 100 分或未定义的分数。所以也许问题是我的 Parse 服务器没有在仪表板中正确显示这个 Int 值?这很奇怪。但是,它确实正确显示了同样位于 GameScore 对象上的属性。此外,从服务器获取 GameScore 后,最新创建的 GameScore 看起来具有未定义的分数,而不是响应回调所说的分数。因此,由于某种原因,服务器没有保存 Int 值。name

更新 2

我在 Parse 服务器中创建了另一列,并在我的 GameScore 对象中创建了一个名为(如示例所示)的相应属性,只是为了测试它。用 ,它保存了我正确给出的初始值!我不知道问题出在哪里,但也许它是一个关键字或不起作用的东西。pointpointscore

SwiftUI 平台解析 -iOS-SDK

评论


答: 暂无答案