【发布时间】:2014-12-11 20:11:04
【问题描述】:
你好简单明了我正在尝试读取一个 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”
我很确定第一个导致第二个。
如果有人能修正我的逻辑,我将不胜感激。如果这只是尝试实现目标的一种糟糕方式,我也愿意接受一种新方式。
谢谢!
【问题讨论】: