得到一个没有可选的快速类var("值")

时间:2016-01-26 21:50:22

标签: swift2

我正在创建一个实用程序来将日志事件添加到日历中。

示例运行

./create-events-from-dvd-contents.swift --path /Volumes/ARCHIVE/DVD\ 1255/2451-01_LLA_Assets\ Folder\ Nov\ 2015/
Optional("DVD 1255")

班级

class Event {
    var location: String? ;
    var start: String? ;
    var notes: String? ;
}

打印DVD位置的代码是

let event = Event() ;
let pathArray = path.characters.split {$0 == "/"}.map { String($0) } ;
event.location = pathArray[2] ; 
print(event.location) ;

获得DVD 1255'最简单的方法是什么?输出而不是'可选(" DVD 1255")'?

2 个答案:

答案 0 :(得分:1)

您必须首先将值解包到其自己的(非可选)变量中。

let event = Event() ;
let pathArray = path.characters.split {$0 == "/"}.map { String($0) } ;
event.location = pathArray[2];

if let location = event.location { 
    print(location);
}
或者你可以放一个!在event.location之后,如果你想要。

let event = Event() ;
let pathArray = path.characters.split {$0 == "/"}.map { String($0) } ;
event.location = pathArray[2] ; 
print(event.location!) ;

答案 1 :(得分:0)

nil-coalescing运算符是一种干净的方法:

var x: String? = "foo"
print(x) // Optional('foo')

x = nil
var y: String = x ?? "bar" // note y is not an optional

print(y) // Bar
print(x ?? "Not optional") // Not optional

另外,我注意到你使用的是冒号,这在Swift中是不必要的。我提到这个,不是作为一个意见,而是因为除非必要(在一行或多个事情上多个陈述),否则Swift不使用分号是一个很好的做法。