init方法在swift中是否工作不正常

init方法在swift中是否工作不正常,swift,Swift,使用下面的代码,尽管所有检查都相反,但本地songs变量永远无法迭代(println显示存储的值)。另一件事是,Xcode调试器似乎在init方法中到处跳跃 let gLibraryManager = LibraryManager() class LibraryManager { var Songs = Dictionary<String, String>() init() { println("struct being initialized from NSDefau

使用下面的代码,尽管所有检查都相反,但本地songs变量永远无法迭代(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")
        }
    }
}
让gLibraryManager=LibraryManager()
班级图书馆经理{
var Songs=字典()
init(){

println(“从NSDefaults初始化的结构”) 让userDefaults=NSUserDefaults.standardUserDefaults(); var结果:AnyObject=userDefaults.objectForKey(列表) println(结果) var local=结果为字典 如果本地!=零{ println(“本地非零:\(本地!)”) 对于(id,标题)在本地{ 歌曲[id]=标题 } 如果Songs.count>0{ println(“检测到默认值:\(歌曲)”) }否则{ println(“未检测到任何默认值。初始化为空”) } } }
好的。我知道是什么了

我已经将Swift编译器代码生成。优化级别设置为-Fastest。这是为了防止字典创建速度极慢

然而,这似乎破坏了迭代结构的能力

它似乎也解决了断点的奇怪反弹问题


这是大海捞针,耗时数小时。我想这个故事的寓意是不要弄乱编译器标志。

你得到的实际错误是什么?你说的
songs
变量不能迭代是什么意思?你是说for块从未执行过吗?你验证过用户默认值是否实际上是retu吗使用非空字典?向我们显示打印输出同样,您是否实际使用
歌曲
歌曲
作为两个不同的变量…从NSDefaults初始化的结构{3806754377931625544=wewhocanotbenamed;}local not nil:[3806754377931625544:wewhocanotbenamed]未检测到默认值。正在初始化empty@TommyFannon,第一条错误消息指示NSDEFAULT中没有任何内容