这个方法在我使用 Swift 1.2 时有效。但是现在,我不得不更新到 Xcode,我不得不将我的语言切换到 Swift 2。这是我使用得很好的 swift 1.2 的方法;
static func findById(idToFind : Int64) -> T? {
let query = table.filter(id == idToFind)
var results: Payment?
if let item = query.first {
results : T = Payment(id: item[id], imageName: item[image], type: item[type], deliveredPriceStr: item[deliveredPrice], orderID: item[orderId])
}
return results
}
现在我为 Swift 2 修改了它,但无法管理;
static func findById(idToFind : Int64) -> T? {
let query = table.filter(id == idToFind)
do {
let query = try table.filter(id == idToFind)
let item = try SQLiteDataStore.sharedInstance.SADB.pluck(query)
if try item != nil {
let results : T = Payment(id: item[id], imageName: item[image], type: item[type], deliveredPriceStr: item[deliveredPrice], orderID: item[orderId])
} else {
print("item not found")
}
} catch {
print("delete failed: \(error)")
}
}
return results
}
我收到了这个错误:“无法下标 Row 类型的值”。我的项目的数据类型似乎更改为行。我该如何解析它?我应该怎么办 ?
PS:我正在使用 swift2 分支。