相关疑难解决方法(0)

如何解决"字符串插值产生可选值的调试描述;你的意思是明确这个吗?" 在Xcode 8.3 beta?

从beta 8.3开始,zillions警告"字符串插值会为可选值生成调试描述;你的意思是明确说明吗?" 出现在我的代码中.

例如,警告在以下情况下弹出,其中选项可能导致nil:

let msg = "*** Error \(options["taskDescription"]): cannot load \(sUrl) \(error)"
Run Code Online (Sandbox Code Playgroud)

如前所述,我(和编译器)可以将选项插值为'nil'.但是编译器改变了主意.

编译器建议添加一个带有描述的String构造函数,如下所示:

let msg = "*** Error \(String(describing: options["taskDescription"])): cannot load \(sUrl) \(error)"
Run Code Online (Sandbox Code Playgroud)

显然,结果是明确的,但在我看来也非常麻烦.有更好的选择吗?我是否必须修复所有警告或更好等待下一个测试版?

截图用于描述

optional string-interpolation swift swift3

76
推荐指数
7
解决办法
3万
查看次数

如何从任何类型解包可选值?

给定一个包含[Any]可选值和非可选值的数组,例如:

let int:Int? = 1
let str:String? = "foo"

let values:[Any] = [int,2,str,"bar"]
Run Code Online (Sandbox Code Playgroud)

我们怎样才能提取的值OptionalAny类型(如果有的话),所以我们可以创建一个通用的打印功能,仅打印出的值.

例如,这个printArray函数遍历并打印每个元素:

func printArray(values:[Any]) {
    for i in 0..<values.count {
        println("value[\(i)] = \(values[i])")
    }
}

printArray(values)
Run Code Online (Sandbox Code Playgroud)

哪个会输出:

value[0] = Optional(1)
value[1] = 2
value[2] = Optional("foo")
value[3] = bar
Run Code Online (Sandbox Code Playgroud)

我们如何更改它以便它只打印基础值,以便在可选时将其展开值?例如:

value[0] = 1
value[1] = 2
value[2] = foo
value[3] = bar
Run Code Online (Sandbox Code Playgroud)

更新进度......

更改参数时它可以工作[Any?],例如:

let values:[Any?] = [int,2,str,"bar"]

func printArray(values:[Any?]) {
    for i in 0..<values.count {
        println("value[\(i)] = \(values[i]!)") …
Run Code Online (Sandbox Code Playgroud)

swift

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

从Swift中的数组转换为右泛型

我有一个叫做的协议Composite.

该协议有一个数组 composites: [Composite]

我也有一个通用的子类 GenericSubclass<T>: Composite

迭代数组时,我能想到的最好看起来像这样:

for item in composites {
    if let item = item as? GenericSubclass<A> {
        let sc = SomeOtherClass<A>
    } else if let item = item as? GenericSubclass<B> {
        let sc = SomeOtherClass<B>
    } //and so on...
}
Run Code Online (Sandbox Code Playgroud)

有没有办法在GenericSubclass没有指定Generic 的情况下获得保留?在我的用例中,我完全不需要了解T.我只需要实例化具有相同泛型类型的另一个类.

任何帮助深表感谢.

arrays generics swift

14
推荐指数
1
解决办法
640
查看次数

确定Any.Type是否为可选

我正在尝试确定给定的type t(Any.Type)是否是可选类型,我正在使用此测试

t is Optional<Any>.Type
Run Code Online (Sandbox Code Playgroud)

但它总是返回false.

有没有办法实现这个目标?

dynamic swift

13
推荐指数
2
解决办法
3103
查看次数

如何从Swift中的可选类型获取未包装的类型?

我正在尝试从运行时的可选类型中获取未包装的类型。以下代码将显示a的类型Optional<String>

class MySubClass: MyClass {

    var a: String? = nil
}

var a = MySubClass()

let mirror = Mirror(reflecting: a)
for child in mirror.children {
    print(child.value.dynamicType)
}
Run Code Online (Sandbox Code Playgroud)

现在,我想解开类型并获取String,我应该怎么做才能在运行时做到这一点?

swift swift2

5
推荐指数
2
解决办法
2521
查看次数