Tôi có mã để thực hiện một số NSFetchRequest
và đưa kết quả của nó vào một mảng kiểu mô hình dữ liệu tùy chỉnh của tôi. Tìm nạp có thể ném nhưng tôi không muốn quan tâm đến lỗi vì vậy tôi sử dụng try?
và tôi cũng sử dụng as?
khi truyền. Trong Swift 2, đây từng là tốt, nhưng Swift 3 tạo ra một đôi tùy chọn:Tùy chọn ràng buộc với thử? và như thế nào? vẫn tạo ra một kiểu tùy chọn
var expenses: [Expense]? {
let request = NSFetchRequest<NSFetchRequestResult>(entityName: Expense.entityName)
request.predicate = NSPredicate(format: "dateSpent >= %@ AND dateSpent <= %@", [self.startDate, self.endDate])
// Returns [Expense]? because right side is [Expense]??
if let expenses = try? App.mainQueueContext.fetch(request) as? [Expense],
expenses?.isEmpty == false {
return expenses
}
return nil
}
Làm thế nào tôi có thể nói lại phía bên phải của ràng buộc tùy chọn của tôi trong if let
để loại của nó sẽ chỉ đơn giản là một mảng [Expense]
? Tôi nghĩ rằng nó có vẻ vô lý rằng trong điều kiện boolean sau (được sử dụng để được một khoản where
), mảng vẫn là tùy chọn.
Xác nhận rằng công trình này. Thật là một cú pháp tẻ nhạt. –
Chưa kể đến trực quan. –