gpt4 book ai didi

arrays - 快速编辑 plist 数组

转载 作者:行者123 更新时间:2023-11-30 10:19:56 24 4
gpt4 key购买 nike

你好,简单明了,我正在尝试读取一个 plist 数组,编辑一个值,然后将其保存回来。我尝试了很多不同的方法,但似乎无法完全弄清楚我做错了什么。

//These three lines are outside any function to make them global
var dict: NSDictionary!
var data: NSMutableDictionary!
var path: String!

let seconds = Float(mytime)

var HighScores = dict.valueForKey("TiltHighScores") as? NSArray
var myHighScores:NSArray = HighScores!
var fakeLevelHighScore = myHighScores[MyGame.level] as NSNumber
var LevelHighScore = fakeLevelHighScore.floatValue
println("\(LevelHighScore)")
println("\(seconds)")

myNewHighScore = myHighScores


if (seconds>=LevelHighScore){
println("its happening")
myNewHighScore[MyGame.level] = NSNumber(double: Double(seconds))
//error one on line above, error two on line below
data.setObject(myNewHighScores, forKey: "TiltHighScores")
data.writeToFile(path, atomically: true)
}

编辑:抱歉,这个问题很模糊,这里有一些更多细节。我可以很好地从 plist 中读取内容。因此,路径以及读取 plist 所涉及的所有内容都是正确的。我在编辑和重新保存数组时遇到问题。我尝试编辑的数组称为 TiltHighScores。我将其放入变量 HighScores 中。为了打开它,我使用 ! 将 myHighScores 设置为 HighScores标记。我执行相同的过程从数组中提取一个值以获得当前级别的高分。这一切都有效。从这里开始我将收到问题。我想测试并查看用户得分(秒)是否大于该级别的高分,如果是,我想保存新的高分。我尝试通过创建一个数组(myNewHighscores)并用原始高分的值填充其值,然后更改一个值(级别值)并重新保存来做到这一点。

我现在在 if 语句中收到两个错误。具体行数请参阅评论首先:无法分配给该表达式的结果第二:使用未解析的标识符“myNewHighScores”

我很确定第一个原因导致了第二个。

如果有人能纠正我的逻辑,我将非常感激。如果这只是实现我的目标的一个糟糕方法,我也愿意接受新的方法。

谢谢!

最佳答案

如果没有更多细节,就不可能确定(例如,您是否尝试运行调试器?它显示了什么?),但这里有一个可能的情况:MyProperties.plist 尚未存在于文档目录。结果是:

  1. data 为零,因为 path 没有任何内容可读取。
  2. 您将文件复制到路径,但这不会更改数据
  3. 稍后您尝试将 data 写入 path,但由于 data 为零,所以什么也没有发生。

其他可能导致代码失败的事情可能相关也可能不相关,具体取决于您的项目发生的其他情况:

  • 也许应用程序包中不存在 MyProperties.plist,因此它永远不会被复制。
  • 也许 MyProperties.plist 存在,但其内容不是有效的 NSDictionary
  • 也许 MyProperties.plist 存在并且是有效的 NSDictionary,但不包含 TiltHighScores 的值。
  • 也许小于或等于LevelHighScore,因此您永远不会尝试将数据写入文件。

还有一些其他奇怪的事情正在发生 - 比如您创建 myNewHighScore 的方式,为其赋值,然后从不对其进行任何操作。 myNewHighScore 应该在某个地方使用吗?

关于arrays - 快速编辑 plist 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27431556/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com