いくつかの要素で配列をフィルタリングしようとしています。私はrecordtypeが "収入"とcreatedAt日付に等しいが含まれているが、は日付の種類ですので、私は.contain("")
を使用することはできません、私は何を使用できますか?複数の要素で配列をフィルタリングし、Swiftでその合計を見つける方法は?
recordFilter = record.filter { $0.recordtype!.contains("Income") /*|| $0.createdAt! = recordItem.createdAt!*/}
のRecordFilter出力:(この結果はまだcreatedAtによってフィルタリングされていません)その後
[<Record: 0x600000099fa0> (entity: Record; id: 0xd0000000003c0000 <x-coredata://913F25A5-B2C9-4646-9091-5EFE7F906908/Record/p15> ; data: {
accountbook = "first book";
amount = "\U00a59.99";
assest = nil;
category = "\U6295\U8d44";
createdAt = "2017-11-16 16:00:00 +0000";
date = nil;
id = 15;
recordtype = "\U6536\U5165";
remark = "";
toAccBook = nil;
}), <Record: 0x600000099ff0> (entity: Record; id: 0xd000000000400000 <x-coredata://913F25A5-B2C9-4646-9091-5EFE7F906908/Record/p16> ; data: {
accountbook = "first book";
amount = "\U00a56.58";
assest = nil;
category = "\U5de5\U8d44";
createdAt = "2017-11-16 16:00:00 +0000";
date = nil;
id = 16;
recordtype = "\U6536\U5165";
remark = "";
toAccBook = nil;
})]
、私はアレイ内のすべての金額文字列を取得し、それを合計しようとしています。しかし、私はこのコードを使用すると、それはすべて別々の文字列であることがわかりました。どのように配列にまとめることができますか?
let sum = recordFilter.map({Int($0.amount!.dropFirst())})
//[nil, nil]
for i in 0..<recordFilter.count{
if recordFilter[i].amount != nil{
let amountList = recordFilter[i].amount!.dropFirst()
print(amountList) // I found that it's separate string.
//9.99
//11.22
// ...
//let intArray = amountList.map { Int($0)!}
//let sum = amountList.reduce(0, +)
//print(sum)
}
}
あなたの質問には、多くのことが明らかではありません。他のユーザーが簡単に理解できるように、いくつかの余分なコードと適切な説明を与えます。 @ワンjern –
大丈夫、質問を編集しました@VishalPatel –