我正在创建一个实用程序来将日志事件添加到日历中。
示例运行
./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")'?
答案 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不使用分号是一个很好的做法。