我试图使用属性get / set访问结构数组每个TransactionRecord Struct都有位置,每个位置都有一系列事务。每个事务都是TransactionRecord类型
这是我的代码:
struct TransactionRecord {
var transactionId: String
var transactionType: String
}
struct TransactionPackage{
var location: String
var transactions: [TransactionRecord]
}
var data = TransactionPackage(location: "", transactions: []) {
didSet {
if oldValue == nil || data == nil {
tableView.reloadData()
}
}
}
var transaction: TransactionPackage {
get {
var transactions = [TransactionRecord]()
if data.transactions.count > 1 {
for transaction in data.transactions.last ?? [TransactionRecord] {
transactions.append(transaction)
}
}
return TransactionPackage(location: data.location, transactions: transactions)
}
set {
data = [[newValue.location], newValue.transactions]
}
}
我收到多个错误:在线:对于data.transactions.last中的事务? [TransactionRecord] {我得到错误:无法将类型'[TransactionRecord] .Type'的值转换为预期的参数类型'TransactionRecord'
在行:data = [[newValue.location],newValue.transactions]我收到错误:无法指定类型'[Any]'的值来键入'TransactionPackage'
我可以得到一些帮助吗?
第一个错误表示您使用类型[TransactionRecord]
作为默认值而不是类型的实例,例如空数组[]
第二个错误说你不能将[Any]
赋值为TransactionPackage
我想你想把data
映射到transaction
作为计算属性
var transaction: TransactionPackage {
get {
return TransactionPackage(location: data.location, transactions: data.transactions)
}
set {
data = TransactionPackage(location: newValue.location, transactions: newValue.transactions)
}
}
或者更简单
var transaction: TransactionPackage {
get {
return data
}
set {
data = newValue
}
}
这是更正的代码。
struct TransactionRecord {
var transactionId: String
var transactionType: String
}
struct TransactionPackage{
var location: String
var transactions = [TransactionRecord]()
}
var data = TransactionPackage(location: "", transactions: []) {
didSet {
//tableView.reloadData()
}
}
var transaction: TransactionPackage {
get {
var trans = [TransactionRecord]()
if data.transactions.count > 1 {
//Corrections 1,2
for transaction in data.transactions ?? [] {
trans.append(transaction)
}
}
return TransactionPackage(location: data.location, transactions: trans)
}
set {
//Corrections 3
data = TransactionPackage(location: newValue.location, transactions: newValue.transactions)
}
}
更正
data.location = newValue.location data.transactions = newValue.transactions