1
我目前正在創建使用「定時回報」,只有持續的特定時間內的應用程序,我是新來的斯威夫特使用過濾器,當前的目標,我需要滿足:如何過濾JSON數據,然後枚舉過濾的數據?
顯示的獎勵,如果redemptionDate是NULL
隱藏的獎勵,如果currentDateTime> = redemptiondate + redeemTimeLimit(這些是JSON對象)
顯示獎勵和顯示倒數計時器如果currentDateTime < redemptiondate + redeemTimeLimit
倒計時量redemptiondate + redeemTimeLimit和currentDateTime
這是到目前爲止我的代碼,我碰到一對夫婦崩潰之間的區別,筆記中的代碼。我也編號,我嘗試的領域並符合上述條件:
var rewardsArray : [MemberRewardsInfo] = []//MemberRewarsInfo is a JSON Object custom class
var timeFilteredRewardsArray : [MemberRewardsInfo] = []
RewardManager.sharedInstance.updateRewards({ rewards in
self.timeFilteredRewardsArray = rewards
//.1
self.timeFilteredRewardsArray = self.timeFilteredRewardsArray.filter ({$0.redemptionDate == nil})
for filteredReward in self.timeFilteredRewardsArray {
let Date = NSDate()
let df = NSDateFormatter()
df.timeZone = NSTimeZone(forSecondsFromGMT: 0)
df.dateFormat = "MM-dd-yyyy"
let currentDate = df.stringFromDate(Date)
//.2
if currentDate >= filteredReward.redemptionDate! + filteredReward.redeemTimeLimit! {
//remove current reward from array, not sure how to do this
//.3
} else if currentDate < filteredReward.redemptionDate! + filteredReward.redeemTimeLimit!{
//.4
var countdownTimer = (filteredReward.redemptionDate! + filteredReward.redeemTimeLimit!) - currentDate
//error occurs here: "Binary operator '-' cannot be applied to two 'String' operands"
}
}
self.rewardsArray = self.timeFilteredRewardsArray
self.rewardsTableView.reloadData()
})
爲什麼會你過濾你的數組......然後將它分配給當前數組,而你正在枚舉該數組......你的代碼看起來嚴重錯誤從一開始 – Tj3n
我認爲是這樣,你推薦一種好辦法來處理這種情況? – SwiftyJD
是否有你想過濾而不是構建的原因?即爲什麼不創建一個空數組,然後枚舉「獎勵」,將符合條件的項目添加到您創建的數組中? – ghostatron