我正在开发一个 iDevice 游戏,我想将本地玩家的分数存储在设备上。但是,本地播放器可能会发生变化。例如,如果一家人共用一台 iPad,那么他们可能会在玩游戏之前单独登录 GameCenter。为了解决这个问题,我决定将本地分数存储为字典,其中键由本地玩家确定,值是 GKScore 对象的数组。
我的第一个想法是使用 GKLocalPlayer 共享实例作为密钥,但由于它不符合 NSCopying,因此 GKLocalPlayer 不是理想的密钥候选者。我的第二个想法是使用本地播放器的标识符,但 Apple 声明“不要对播放器标识符字符串的内容做出假设。它的格式和长度可能会发生变化。” 当然,我担心如果某天玩家标识符发生神奇变化,玩家可能会失去本地分数。
我的最终想法是使用本地玩家的别名。我已确认未经身份验证的本地播放器的别名字符串等于nil
. [NSNull null]
在这种情况下用作字典键是否安全?假设本地玩家的别名将保持一致是否安全?