我有一个用XMLParser解析的xml文件,并将值附加到一个struc上。但是,我很难获得这些值。到目前为止,这是我作为初学者所了解的。
这是我的结构。它有5个空变量,我将在以后获取。
struct CalendarDates {
var month = ""
var date = ""
var datenumber = ""
var holiday = ""
var description = "" }
接下来,这是我使用XMLParser将值分配给struct
的地方class ViewController: UIViewController, XMLParserDelegate {
var myCalendarDatesStrut = [CalendarDates]()
var calendarEventsFromXML = ""
var monthsFromXML = ""
var datesFromXML = ""
var datenumbersFromXML = ""
var holidaysFromXML = ""
var descriptionsFromXML = ""
//Mark: XML Parse Delegate
extension CalendarViewController {
func parser(_ parser: XMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String] = [:]) {
calendarEventsFromXML = elementName
}
func parser(_ parser: XMLParser, foundCharacters string: String) {
let data = string.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
if data.count != 0 {
switch calendarEventsFromXML
{
case "month": monthsFromXML = data
case "date": datesFromXML = data
case "datenumber": datenumbersFromXML = data
case "holiday": holidaysFromXML = data
default: break
}}}
func parser(_ parser: XMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?) {
if elementName == "calendarevent"
{
var myCalendarDates = CalendarDates()
myCalendarDates.month = monthsFromXML
myCalendarDates.date = datesFromXML
myCalendarDates.datenumber = datenumbersFromXML
myCalendarDates.holiday = holidaysFromXML
myCalendarDatesStrut.append(myCalendarDates)
}}}}
好的,这就是我遇到的一个问题。我想获取所有日期(datesFromXML),以便可以将它们与一些可见的Date匹配并执行一些方法。
我尝试了
let datesFromCalendarXML = myCalendarDatesStrut.date
但这给我一个错误类型'[CalendarDates]'的值没有成员'date'。解析xml时,是否没有将这些附加到此struc?我做错了吗?
答案 0 :(得分:0)
您可以尝试
let datesFromCalendarXML = myCalendarDatesStrut.map {$0.date} // this gives [Date]
由于myCalendarDatesStrut
是一个数组而不是单个对象,因此您不能对其使用点运算符,之后您就可以过滤该数组
let date1 = //
let date2 = //
let result = datesFromCalendarXML.filter { $0 > date1 && $0 < date2 } // filter to whatever you want