我正在学习斯威夫特,并试图了解有关向下倾斜的事情.NSDictionary在Swift中表示为[NSObject:AnyObject].据我所知,这可以下载到更具体的类型(例如[Int:String]).当我们谈论Objective-C时,我得到NSObject是基类,但是如何在Swift中将它下载到String或Integer?据我所知,Swift本机类型不是NSObject的子类.
我在Google Analytics的实施说明中遇到了这个问题:
guard let gai = GAI.sharedInstance() else {
assert(false, "Google Analytics not configured correctly")
}
Run Code Online (Sandbox Code Playgroud)
我从来没有想过可以在else子句中有一个断言,而不返回.这对我来说没有意义,因为断言只会在测试方案中进行评估.那么,为什么编译器不警告它不返回(在发布版本的情况下).
编辑:这是在功能范围内 application(_:didFinishLaunchingWithOptions) -> Bool
编辑2:我发现的其他信息可以解答它:
不幸的是,一旦你进行发布构建,这将会中断,因为在发布配置中删除了断言,并且一个保护块必须结束当前作用域的执行.
我在查看enumerated()有关该Array类型的文档时,发现它说:
复杂度:O(1)
https://developer.apple.com/documentation/swift/array/1687832-枚举
这似乎没有意义,因为遍历数组将是线性时间O(n)--因为数组的长度未知。enumerated()将必须遍历数组才能返回EnumeratedSequence。这个函数如何保持时间复杂度?