SQLite.swift - 无法下标 Row 类型的值。 Swift 2
SQLite.swift - Cannot subscript a value of type Row. Swift 2
这个方法在我使用 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
}
我收到此错误:"Cannot subscript a value of type Row"。我的项目的数据类型似乎已更改为行。我该如何解析它?我应该怎么办 ?
PS:我正在使用 swift2 分支。
我终于知道如何获取值了。现在很容易,行项目在 swift-2 分支上有 get 方法。所以新方法是 ;
static func findById(idToFind : Int64) -> T? {
let query = table.filter(id == idToFind)
var results : T?
do {
let query = table.filter(id == idToFind)
let item = SQLiteDataStore.sharedInstance.SADB.pluck(query)
if try item != nil {
results = Payment( id: (item?.get(id))!, imageName: (item?.get(image))!, type: (item?.get(type))!, deliveredPriceStr: (item?.get(deliveredPrice))!, orderID: (item?.get(orderId))!)
} else {
print("item not found")
}
}
catch {
print("delete failed: \(error)")
}
return results
}
希望这对某人有所帮助。
这个方法在我使用 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
}
我收到此错误:"Cannot subscript a value of type Row"。我的项目的数据类型似乎已更改为行。我该如何解析它?我应该怎么办 ?
PS:我正在使用 swift2 分支。
我终于知道如何获取值了。现在很容易,行项目在 swift-2 分支上有 get 方法。所以新方法是 ;
static func findById(idToFind : Int64) -> T? {
let query = table.filter(id == idToFind)
var results : T?
do {
let query = table.filter(id == idToFind)
let item = SQLiteDataStore.sharedInstance.SADB.pluck(query)
if try item != nil {
results = Payment( id: (item?.get(id))!, imageName: (item?.get(image))!, type: (item?.get(type))!, deliveredPriceStr: (item?.get(deliveredPrice))!, orderID: (item?.get(orderId))!)
} else {
print("item not found")
}
}
catch {
print("delete failed: \(error)")
}
return results
}
希望这对某人有所帮助。