相关疑难解决方法(0)

Swift:快捷方式展开选项数组

假设我们定义了一组选项:

var arrayOfOptionals: [String?] = ["Seems", "like", "an", nil, "of", "optionals"]
Run Code Online (Sandbox Code Playgroud)

我可以用一小段时间强行打开它: var arrayForCrash = arrayOfOptionals.map { $0! }

但这会让应用程序崩溃,还有其他任何简短的方法(没有明确展开)我如何解开一个可选数组?

swift

36
推荐指数
2
解决办法
2万
查看次数

Swift:将Any转换为协议对象数组

有一个协议:

protocol Valuable {
    func value() -> Int
}
Run Code Online (Sandbox Code Playgroud)

和一个实现协议的类:

class Value: Valuable {
    private let v: Int

    init(value: Int) {
        v = value
    }

    func value() -> Int {
        return v
    }
}
Run Code Online (Sandbox Code Playgroud)

有一个Value对象数组存储在Any类型的变量中:

let any: Any = [Value(value: 1), Value(value: 2), Value(value: 3)]
Run Code Online (Sandbox Code Playgroud)

可以将Any转换为[Value]:

let arrayOfValue = any as? [Value] // [1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

为什么不能将[任何]归咎于[有价值]?

let arrayOfValuable = any as! [Valuable] // compiler error BAD INSTRUCTION
let arrayOfValuable2 = any as? [Valuable] // nil
Run Code Online (Sandbox Code Playgroud)

casting protocols swift

15
推荐指数
2
解决办法
1万
查看次数

标签 统计

swift ×2

casting ×1

protocols ×1