2017-01-19 41 views
-6

我有一个字符串00012。我需要制作一个字符串12。然后通过将字符串连接到名称来加载UIImage。 所以我做了以下诠释为非可选字符串

let myString = "00012" 
let myInt = Int(myString) 
let imageName = "name_\(myInt)" 
let image = UIImage(named: imageName) 

的问题是,(敏)返回一个可选的。我没有得到imageName = name_12,我得到imageName = name_optional(12)

我该如何摆脱可选?

我不能修剪从初始字符串前3个零,因为数量可00001

+1

选配是雨燕编程语言的完全不可分割的一部分。 [第一部分,Swift编程语言指南的“基础知识”]详细介绍了它们(https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/) TheBasics.html#// apple_ref/DOC/UID/TP40014097-CH5-ID330)。阅读。 – Alexander

回答

0

使用另购的绑定:

let myString = "00012" 
if let myInt = Int(myString) { 
    let imageName = "name_\(myInt)" 
    let image = UIImage(named: imageName) 
} 

选择使用正则表达式:

let myString = "00012" 
let myStringWithoutLeadingZeros = myString.replacingOccurrences(of: "^0+", with: "", options: .regularExpression) 
let imageName = "name_" + myStringWithoutLeadingZeros 
let image = UIImage(named: imageName) 
0

你可以直接解包数值

let myString = "00012" 
let myInt = Int(myString)! // unwrapping 
let imageName = "name_\(myInt)" 
let image = UIImage(named: imageName) 

或者你可以使用可选的结合

let myString = "00012" 
if let myInt = Int(myString) { // Optional binding 
    let imageName = "name_\(myInt)" 
    let image = UIImage(named: imageName) 
} 
相关问题