gpt4 book ai didi

ios - Swift 2-如果值在当前日期之前,则删除数组中的NSDate值

转载 作者:行者123 更新时间:2023-12-01 18:47:20 25 4
gpt4 key购买 nike

在我的应用程序中,我创建一个“NSDate”数组以发送本地通知。
保存的值为“UUID”和“最后期限”,并使用let gameDictionary = NSUserDefaults.standardUserDefaults().dictionaryForKey(GAME_INFO) ?? [:]保存

结果如下:

[{
UUID = "546C5E4D-CFEE-42F3-9010-9936753D17D85";
deadline = "2015-12-25 15:44:26 +0000";
}, {
UUID = "7C030614-C93C-4EB9-AD0A-93096848FDC7A";
deadline = "2015-12-25 15:43:15 +0000";
}]

我想要实现的是将“截止日期”值与当前日期进行比较,如果截止日期早于当前日期,则需要从数组中删除这些值。
func compareDeadline()  {

let gameDictionary = NSUserDefaults.standardUserDefaults().dictionaryForKey(GAME_INFO) ?? [:]
var items = Array(gameDictionary.values)

for i in 0..<items.count {

let dateNotification = items[i]["deadline"]!! as! NSDate

print(dateNotification)

var isOverdue: Bool {
return (NSDate().compare(dateNotification) == NSComparisonResult.OrderedDescending) // deadline is earlier than current date
}

print(isOverdue)

if (isOverdue == true){
items.removeAtIndex(i)
}

}
}

当我尝试从数组中删除值时,我得到 Fatal Error: Array index out of range
任何想法我该如何解决?

最佳答案

有一些问题。出现错误的原因是因为块中的块中进行迭代时无法删除元素。您可以使用以下代码过滤项目:

func compareDeadline()  {
let gameDictionary = NSUserDefaults.standardUserDefaults().dictionaryForKey(GAME_INFO) ?? [:]
let items = Array(gameDictionary.values)
let currentDate = NSDate()
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ssZ"

let filteredItems = items.flatMap({
guard let stringDeadline = $0["deadline"] as? String, let deadline = dateFormatter.dateFromString(stringDeadline) else {
return nil
}

return deadline
}).filter({
currentDate.compare($0) == .OrderedDescending
})
}

关于ios - Swift 2-如果值在当前日期之前,则删除数组中的NSDate值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34464341/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com