如何在没有"可选"?的情况下从plist打印字符串?

时间:2014-10-28 03:01:38

标签: swift plist

我从plist中的字典加载一个值,但是当我将它打印到控制台时,它会打印:可选(星期一标题),而不仅仅是"星期一标题"。

如何在打印时摆脱我的值的Optional()?

var plistPath = NSBundle.mainBundle().pathForResource("days", ofType: "plist")
var plistArray = NSArray(contentsOfFile: plistPath!) as NSArray!

    for obj: AnyObject in plistArray {
        if var dicInfo = obj as? NSDictionary {
            let todayTitle: AnyObject? = dicInfo.valueForKey("Title")
            println(todayTitle)
        }
    }    

6 个答案:

答案 0 :(得分:37)

摆脱Optional的一种方法是使用感叹号:

println(todayTitle!)

但是,只有在您确定值存在的情况下才应该这样做。另一种方法是打开并使用条件,如下所示:

if let theTitle = todayTitle {
    println(theTitle)
}

将此程序粘贴到runswiftlang以进行演示:

let todayTitle : String? = "today"
println(todayTitle)
println(todayTitle!)
if let theTitle = todayTitle {
    println(theTitle)
}

答案 1 :(得分:5)

经过一番尝试,我觉得这种方式更好。

(variableName ?? "default value")!

使用??作为默认值,然后使用!解包可选变量。

以下是示例

var a:String? = nil
var b:String? = "Hello"

print("varA = \( (a ?? "variable A is nil.")! )")
print("varB = \( (b ?? "variable B is nil.")! )")

会打印

varA = variable A is nil.
varB = Hello

答案 2 :(得分:4)

另一种更紧凑的方式(显然有争议,但它至少是一个单一的衬垫)

(result["ip"] ?? "unavailable").description

理论上result["ip"] ?? "unavailable"也应该有效,但事实并非如此,除非在2.2

当然,用适合你的东西替换“不可用”:“nil”,“not found”等

答案 3 :(得分:0)

我不确定链接到其他答案的正确流程是什么,但my answer to a similar question也适用于此。

Valentin的答案适用于String?类型的可选项,但如果您想执行以下操作,则无法工作:

let i? = 88
print("The value of i is: \(i ?? "nil")")  // Compiler error

答案 4 :(得分:0)

Swift 3.1

从Swift 3,您可以使用String(describing:)打印出可选值。但语法很糟糕,结果在控制台日志中不容易看到。

这样我就可以创建Optional的扩展名,以创建一致的nil值。

extension Optional {
    var logable: Any {
        switch self {
        case .none:
            return "⁉️" // Change you whatever you want
        case let .some(value):
            return value
        }
    }
}

使用方法:

var a, b: Int?
a = nil
b = 1000
print("a: ", a.logable)
print("b: ", b.logable)

结果:

a: ⁉️
b: 1000

答案 5 :(得分:-1)

初​​始化

Var text: string? = nil

打印

print("my string", text! as string)

这将避免单词" optional"在字符串之前。