我以这种格式向日期Firebase添加项目:
// retrieve data from Firebase to the View
var dateToCompare: String?
var array: [Word] = []
func getAllMessagesSent(snapshot: [Word]) {
int = snapshot.count - 1
array = snapshot
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MM/dd/yyyy"
dateFormatter.timeZone = TimeZone(secondsFromGMT: 0)
// get the nearest item's date and convert it to Date
dateToCompare = array[0].fullDate
let formattedDateToCompare = dateFormatter.date(from: dateToCompare!)
// make array of dates
var dateArray = [NSDate]()
var numberOfWordsThisDay = 1
// formatting all dates in the array
for i in 0..<array.count {
let date1 = dateFormatter.date(from: array[i].fullDate)
dateArray.append(date1! as NSDate)
}
// comparing and in case of cussces increase the number
for i in 1..<array.count {
if Calendar.current.compare(formattedDateToCompare!, to: dateArray[i] as Date, toGranularity: .day) == .orderedSame {
numberOfWordsThisDay += 1
}
}
self.numOfWords.placeholder = "From \(numberOfWordsThisDay) to \(array.count)"
}
所以,我的Firebase for Date看起来像这样:
然后,我在另一个ViewController中检索这些数据并将其添加到数组中:
image_ID
问题:
如何从最近的一天从数组中检索项目?如果今天是8月16日,我应该获得最近一天的所有项目(例如,8月12日的8个项目,如果这个日期是最后一个)。我是否应该改变向Firebase添加日期以实现此目的的方式?
修改
我通过将数组中的最后一个日期与所有其他日期进行比较来实现此目的:
SELECT pro.id
, pro.featured
, pro.price_per_night
, pro.meta_title
, img.image
它可以工作,但它绝对不是有效的解决方案,因为我循环了两个巨大的数组。是否可以改进我的代码?谢谢!