相关疑难解决方法(0)

从AnyObject转换为CGColor?没有错误或警告

你好StackOverflow :)

自从升级到Swift 2.0以来,我一直遇到一个奇怪的问题

我正在尝试设置边框颜色,所以我正在写self.layer.borderColor = borderColor as! CGColorborderColor是一个AnyObject,而self.layer.borderColor是一个CGColor?

如果我写self.layer.borderColor = borderColor as! CGColor我得到警告

将强制向下转换为“ CGColor”作为可选选项将永远不会产生“ nil”

并建议改为使用 as?

如果我改写self.layer.borderColor = borderColor as? CGColor我会得到错误

有条件地向下转换为CoreFoundation类型“ CGColor”将始终成功

为了确保我没有丢失我也尝试写的东西container.layer.borderColor = borderColor as CGColorcontainer.layer.borderColor = borderColor这两个都给出了以下错误:

'AnyObject'不能转换为'CGColor';您是要使用“ as!”吗?强迫垂头丧气?

仅在使用时使用XCode给出的警告运行as!并不十分糟糕,但我希望保持我的代码警告自由。我真的很需要您的帮助。这是我不了解的东西,还是我应该报告的Swift 2.0中的错误。

干杯!

雅各布

casting compiler-warnings cgcolor ios anyobject

6
推荐指数
2
解决办法
2018
查看次数

下调“ Any”时出现Swift错误

以下代码几乎是Apple Documentation的精确复制品,编译时没有错误:

guard let firstItem = (rawItems! as? Array<Dictionary<String, Any>>)?.first else {
    throw AnError()
}

let identityRef = firstItem[kSecImportItemIdentity as String] 
               as! SecIdentity?   // !!!

guard let identity = identityRef else {
    throw AnError()
}
Run Code Online (Sandbox Code Playgroud)

标有的行!!!包含强制向下转换,而替换as!as显然会导致编译错误'Any?' is not convertible to 'SecIdentity?'...确实SecIdentity是一个类,Any甚至可能不是一个类。

我真正无法解释的是以下内容。如果我尝试使代码更安全,请使用此

guard let idenity = firstItem[kSecImportItemIdentity as String] as? SecIdentity
else {
    throw AnError()
}
Run Code Online (Sandbox Code Playgroud)

或这个

guard let idenityRef = firstItem[kSecImportItemIdentity as String] as? SecIdentity? …
Run Code Online (Sandbox Code Playgroud)

downcast optional-values swift

5
推荐指数
1
解决办法
226
查看次数