ios - 如何使用 swift 创建一个用于 Parse 的对象 ID,在 iOS 应用程序生命周期中仅创建一次,然后使用相同的 ID 来更新值?

标签 ios swift parse-platform xcode6

我正在制作一款 iOS 游戏,并且想要实现 Parse 来跟踪一些值,例如高分和玩过的游戏总数。我希望应用程序在其整个生命周期中为一个用户生成一个对象 ID,并使用相同的 ID 来更新分数的变化。

目前,我的做法是检查 NSUserDefaults.standardUserDefaults 是否已设置,即是否不等于 nil。如果是,则该值不等于字符串“parseObjectIdNotSaved”,然后创建对象 ID。

但是,这会引发错误:

func parseProfileIdExists() {

    var profileIdDefault = NSUserDefaults.standardUserDefaults().objectForKey("playerProfileObjectId") as! String

    if profileIdDefault != (nil) && ("playerProfileObjectId"){
        let defaults = NSUserDefaults.standardUserDefaults()
        GameState.sharedInstance.playerProfileObjectId = defaults.stringForKey("playerProfileObjectId")!
    } else {
        println("This worked")
        GameState.sharedInstance.createObjectIdForParse()
    }
}

我有一个变量 var playerProfileObjectId = "parseObjectIdNotSaved",我用它来设置一些初始值。 createObjectIdForParse 函数:

func createObjectIdForParse(){
    //For Parsing Data
    playerProfile["highScore"] = GameState.sharedInstance.highScore
    playerProfile.saveInBackgroundWithBlock {
        (success: Bool, error: NSError?) -> Void in
        if (success) {
            // The object has been saved.
            GameState.sharedInstance.playerProfileObjectId = self.playerProfile.objectId!
            println(" GameVC - Player profile ID is: (GameState.sharedInstance.playerProfileObjectId)")
        } else {
            println(" Player profile data will be saved eventually")
            self.playerProfile.saveEventually()
        }
    }
}

请建议任何更好的方法来做到这一点。这将是我的第一个应用程序,我没有很强的编程背景。

最佳答案

使用返回选项的函数时,最佳实践是按如下方式分配和检查:

if let profileIdDefault = NSUserDefaults.standardUserDefaults().objectForKey("playerProfileObjectId") as? String {
    // object profileIdDefault is the found object with key "playerProfileObjectId"
}

“if let...”基本上尝试将被调用函数的返回值分配给常量“profileIdDefault”。如果返回 nil(未找到),则此 if 条件失败。

关于ios - 如何使用 swift 创建一个用于 Parse 的对象 ID,在 iOS 应用程序生命周期中仅创建一次,然后使用相同的 ID 来更新值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30987271/

相关文章:

ios - 在 PFQueryTableViewController 中过滤查询结果

javascript - 如何通过 JavaScript 在 Parse.com 中保存图像?

ios - 如何在 UIScrollView 或等效物中实现 touchesEnded

ios - (Swift) 如何通过分页单个 View 实现一个Page Control?

ios - 用swift 4.0编译的模块不能导入swift 3.1

android - 为什么推送通知服务器准确地向客户端发送消息

ios - UISearchController 的自定义动画?

ios - 如何查询特定项目的解析并防止保存重复项

ios - 生命周期:我什么时候在 UIViewController 中隐藏和显示标签栏

iphone - 显示触摸按钮的提示