Swift   发布时间:2022-03-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了swift – 如何解开任意类型的可选值?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

给定一个[Any]的数组,其中包含可选值和非可选值,例如: let int:Int? = 1 let str:string? = "foo" let values:[Any] = [int,2,str,"bar"] 我们如何提取在Any类型(如果有)的Optional的值,所以我们可以创建一个通用打印函数,只打印出值。 例如。这个printArray函数遍历并打印每个元素: func print
给定一个[Any]的数组,其中包含可选值和非可选值,例如:
let int:Int? = 1
let str:string? = "foo"

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

我们如何提取在Any类型(如果有)的Optional的值,所以我们可以创建一个通用打印函数,只打印出值。

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

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

printArray(values)

其中将@L_673_5@:

value[0] = Optional(1)
value[1] = 2
value[2] = Optional("foo")
value[3] = bar

我们如何更改它,以便它只打印底层值,以便它解包的值,如果它是可选的?例如:

value[0] = 1
value[1] = 2
value[2] = foo
value[3] = bar

更新进度…

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

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

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

printArray(values)

其中将打印所需的:

value[0] = 1
value[1] = 2
value[2] = foo
value[3] = bar

但仍然想看看我们如何解开一个Optional从Any,因为这是什么MirrorType.value返回使得很难提取可选值,例如:

class Person {
    var id:Int = 1
    var name:string?
}

var person = Person()
person.name = "foo"

var mt:MirrorType = reflect(person)
for i in 0 ..< mt.count {
    let (name,pt) = mt[i]
    println("\(Name) = \(pt.value)")
}

打印:

id = 1
name = Optional("foo")

当我需要:

id = 1
name = foo
对于Xcode 7和Swift 2:
func unwrap(any:Any) -> Any {

    let mi = Mirror(reflecTing: any)
    if mi.displayStyle != .optional {
        return any
    }

    if mi.children.count == 0 { return NSNull() }
    let (_,somE) = mi.children.first!
    return some

}


let int:Int? = 1
let str:string? = "foo"
let null:Any? = nil
let values:[Any] = [unwrap(int),unwrap(str),"bar",unwrap(null)]

这将给你[1,2,“foo”,“bar”,{NSObject}]

将NSNull()更改为nil,并将unwrap func的返回值更改为Any?将总是解包任何类型。

大佬总结

以上是大佬教程为你收集整理的swift – 如何解开任意类型的可选值?全部内容,希望文章能够帮你解决swift – 如何解开任意类型的可选值?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。