Với Swift 3, bạn có thể sử dụng chuỗi tùy chọn, câu lệnh chuyển đổi hoặc mẫu tùy chọn để giải quyết vấn đề của mình.
1. Sử dụng if let
(ràng buộc tùy chọn / chuỗi tùy chọn)
Các Swift Lập trình Ngôn ngữ nói về chaining tùy chọn:
Nhiều truy vấn có thể được nối lại với nhau và toàn bộ chuỗi không thành công nếu bất kỳ liên kết nào trong chuỗi không.
Do đó, trong trường hợp đơn giản nhất, bạn có thể sử dụng mẫu sau để sử dụng nhiều truy vấn trong hoạt động chuỗi tùy chọn của mình:
let dict = ["latitude": 2.0 as AnyObject?, "longitude": 10.0 as AnyObject?]
let latitude = dict["latitude"]
let longitude = dict["longitude"]
if let latitude = latitude as? Double, let longitude = longitude as? Double {
print(latitude, longitude)
}
// prints: 2.0 10.0
2. Sử dụng bộ dữ liệu và ràng buộc giá trị trong câu lệnh chuyển đổi
Thay thế cho một chuỗi tùy chọn đơn giản, câu lệnh switch có thể cung cấp một giải pháp chi tiết tốt khi được sử dụng với các bộ dữ liệu và ràng buộc giá trị:
let dict = ["latitude": 2.0 as AnyObject?, "longitude": 10.0 as AnyObject?]
let latitude = dict["latitude"]
let longitude = dict["longitude"]
switch (latitude, longitude) {
case let (Optional.some(latitude as Double), Optional.some(longitude as Double)):
print(latitude, longitude)
default:
break
}
// prints: 2.0 10.0
let dict = ["latitude": 2.0 as AnyObject?, "longitude": 10.0 as AnyObject?]
let latitude = dict["latitude"]
let longitude = dict["longitude"]
switch (latitude, longitude) {
case let (latitude as Double, longitude as Double):
print(latitude, longitude)
default:
break
}
// prints: 2.0 10.0
let dict = ["latitude": 2.0 as AnyObject?, "longitude": 10.0 as AnyObject?]
let latitude = dict["latitude"]
let longitude = dict["longitude"]
switch (latitude as? Double, longitude as? Double) {
case let (.some(latitude), .some(longitude)):
print(latitude, longitude)
default:
break
}
// prints: 2.0 10.0
let dict = ["latitude": 2.0 as AnyObject?, "longitude": 10.0 as AnyObject?]
let latitude = dict["latitude"]
let longitude = dict["longitude"]
switch (latitude as? Double, longitude as? Double) {
case let (latitude?, longitude?):
print(latitude, longitude)
default:
break
}
// prints: 2.0 10.0
3. Sử dụng bộ dữ liệu với if case
(mẫu tùy chọn)
if case
( mẫu tùy chọn ) cung cấp một cách thuận tiện để mở các giá trị của phép liệt kê tùy chọn. Bạn có thể sử dụng nó với các bộ dữ liệu để thực hiện một số chuỗi tùy chọn với nhiều truy vấn:
let dict = ["latitude": 2.0 as AnyObject?, "longitude": 10.0 as AnyObject?]
let latitude = dict["latitude"]
let longitude = dict["longitude"]
if case let (.some(latitude as Double), .some(longitude as Double)) = (latitude, longitude) {
print(latitude, longitude)
}
// prints: 2.0 10.0
let dict = ["latitude": 2.0 as AnyObject?, "longitude": 10.0 as AnyObject?]
let latitude = dict["latitude"]
let longitude = dict["longitude"]
if case let (latitude as Double, longitude as Double) = (latitude, longitude) {
print(latitude, longitude)
}
// prints: 2.0 10.0
let dict = ["latitude": 2.0 as AnyObject?, "longitude": 10.0 as AnyObject?]
let latitude = dict["latitude"]
let longitude = dict["longitude"]
if case let (.some(latitude), .some(longitude)) = (latitude as? Double, longitude as? Double) {
print(latitude, longitude)
}
// prints: 2.0 10.0
let dict = ["latitude": 2.0 as AnyObject?, "longitude": 10.0 as AnyObject?]
let latitude = dict["latitude"]
let longitude = dict["longitude"]
if case let (latitude?, longitude?) = (latitude as? Double, longitude as? Double) {
print(latitude, longitude)
}
// prints: 2.0 10.0