使用下面的代码,尽管所有检查都相反(println显示存储的值),但本地歌曲变量永远不能被迭代。另一件事是Xcode调试器似乎在init方法中遍布各处。
let gLibraryManager = LibraryManager()
class LibraryManager {
var Songs = Dictionary<String, String>()
init() {
println("struct being initialized from NSDefaults")
let userDefaults = NSUserDefaults.standardUserDefaults();
var result:AnyObject = userDefaults.objectForKey(LIKED_LIST)
println(result)
var local = result as? Dictionary<String,String>
if local != nil {
println("local not nil: \(local!)")
for (id,title) in local! {
Songs[id] = title
}
if Songs.count > 0 {
println("NSDefaults detected: \(Songs)")
} else {
println("no NSDefaults detected. Initializing empty")
}
}
}
答案 0 :(得分:0)
确定。我弄明白是什么。
我设置了Swift编译器 - 代码生成。优化级别 - 最快。这是为了防止字典的创建速度极慢。
但是,它似乎打破了迭代结构的能力。
它似乎也解决了断点的奇怪反弹。
这是大海捞针需要花费数小时的时间。我想这个故事的寓意是不要乱用编译器标志。