2015-11-12 1 views
0

Есть ли специальный способ, который вы должны назвать attributeDict, где строка содержит тире?Использование NSXMLParser для получения атрибута в Swift

Я пытаюсь получить название периода ниже:

<time-layout time-coordinate="local" summarization="12hourly"> 
    <layout-key>k-p12h-n13-1</layout-key> 
      <start-valid-time period-name="Veterans Day">2015-11-11T06:00:00-05:00</start-valid-time> 

Использование

if (elementName as NSString).isEqualToString("start-valid-time") { 
    var test = attributeDict["period-name"]! 
    print(elementName) 
    print(attributeDict) 
} 

я могу видеть, что имя атрибута на детской площадке является тот же ключ, что я прошу, но он не возвращается? Это должно быть что-то странное с "-". Я думаю?

Edit: это может быть Swift проблема, потому что с помощью интерполяцию строки возвращает строку:

let test = ("\(attributeDict["period-name"])") 

ответ

0

Проблема заключалась в том, что NSXMLParser и это attributeDict является Objective-C API, и NSDictionary силы ключ/значение, чтобы соответствовать к протоколу NSCopying, для которого требуется NSObject. Из-за того, что вы не можете перейти непосредственно от NSObject к String, проходя через NSString является обязательным, так:

if let periodAsNSString: NSString = attributeDict["period-name"] { 
    let periodAsString: String = periodAsNSString as String 
} 

Наконец получил значение в строку