在我的应用程序中,我想添加导出成员数据的功能。我在谈论会员的所有交易。这就是我所拥有的,我希望我的要求很清楚。 我必须编辑什么才能起作用?还是我的方法正确?
var str: [String] = []
for trans in (member?.transactions!)! {
let trnsctnr = trans.reason
let trnsctna = String(trans.money)
var trnsctnd = ""
if let trnsd = trans.date{
trnsctnd = dateFormatter.string(from: trnsd)
}
str = [trnsctnr, trnsctna, trnsctnd] as! [String]
}
此代码无效。我想在“ MFMailComposerController”中添加它,然后显示此错误:
无法将'Never'类型的值转换为预期的参数类型'String'
所以我想导出成员所做的所有交易的数据。
我作为计算属性所做的事情:
struct stringForMFMail {
let trnsctnr = transaction?.reason
var trnsctna = ""
if let trns = transaction?.money {
trnsctna = String(trns)
}
var trnsctnd = ""
if let trnsd = transaction?.date{
trnsctnd = dateFormatter.string(from: trnsd)
}
let dataString = [trnsctnr, trnsctna, trnsctnd]
}
这根本不起作用,所以我确定我做错了。有一些错误,例如:结构声明不能关闭外部范围中定义的值“ self”。这部分总共有12个错误,所以我做错了什么。
答案 0 :(得分:2)
在类Transaction
中添加此计算所得的属性,它返回三个值(如果存在),以逗号分隔。
var stringForMFMail : String {
var result = self.reason ?? ""
result += "\(self.money)"
if let trnsd = self.date {
result += ", \(dateFormatter.string(from: trnsd))"
}
return result
}
还在Transaction
let dateFormatter : DateFormatter = {
let formatter = DateFormatter()
formatter.locale = Locale(identifier: "en_US_POSIX")
formatter.dateFormat = "dd:MM:yyyy"
return formatter
}()
现在您可以填充数组
var mailStrings = [String]()
if let transactions = member?.transactions {
mailStrings = member.transactions.map{ $0.stringForMFMail }
}
如果您需要一个字符串,请join
数组
let str = mailStrings.join(separator: ", ")