2016-12-07 5 views
2

Я скачал .plist файл с Swift и Alamofire, и я хочу прочитать значения .plist-файла.Как преобразовать .plist xml string в NSDictionary

if let url = URL(string: urlString) { 
    Alamofire.download(url).responseData(completionHandler: { response in 
     if response.result.isSuccess { 
      if let plistData = response.result.value { 
       if let plistXml = String(data: data, encoding: .utf8) { 
        // plistXml contains the actual plist contents as String object. 
       } 

      } 
     } 
    }) 
} 

У меня есть к объектам, содержащим скачанную .plist файл:

  • plistData: загруженные данные объекта
  • plistXml: Струнный объект из plistData

Использование любого из этих объектов , Я хочу преобразовать plist fie в NSDictionary или Dictionary.

+1

См Apple, Docs: https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/PropertyLists/SerializePlist/SerializePlist.html –

+0

@UlasSancak Он не использует Swift :( – malhobayyeb

+1

@malhobayyeb : (NS) PropertyListSerialization из Foundation Framework и доступен в Swift. –

ответ

0
  1. Использование SWXMLHash
  2. Read plistXml и разобрать шаг за шагом XML с помощью этой документации.
  3. Сохранить элемент, который вы хотите, чтобы внутри plistXml в Словаре

удачи!

+0

Вместо этого я использовал бы XMLParser. Однако это первый раз, когда я услышал об этом. – malhobayyeb

+0

Удачи. ура !!! –

4

Вы можете использовать PropertyListSerialization из фреймворка, чтобы создать NSDictionary из данных данного списка свойств. Swift 3 Пример:

do { 
    if let plist = try PropertyListSerialization.propertyList(from: plistData, format: nil) 
     as? NSDictionary { 
      // Successfully read property list. 
      print(plist) 

    } else { 
     print("not a dictionary") 
    } 
} catch let error { 
    print("not a plist:", error.localizedDescription) 
} 

И

if let plist = try PropertyListSerialization.propertyList(from: plistData, format: nil) 
     as? [String: Any] { ... } 

вы получите результат как Swift Dictionary.

-1

Адресная информация цели-C. Вы можете легко преобразовать его.

NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsPath = [paths objectAtIndex:0]; 
    NSString *plistPath = [documentsPath stringByAppendingPathComponent:@"register.plist"]; 

    if (![[NSFileManager defaultManager] fileExistsAtPath:plistPath]) { 
     plistPath = [[NSBundle mainBundle] pathForResource:@"register" ofType:@"plist"]; 
    } 

    NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:plistPath]; 
+0

Я загружаю файл .plist из URL-адреса. Я могу получить его как объект «Data» или как объект «String». Поэтому я хочу преобразовать его из 'String' или' Data' в 'Dictionary' или NSDictionary' – malhobayyeb

+0

Используйте это для преобразования NSData в NSDictionary-> NSError * errorJson = nil; NSDictionary * dictionaryData = [NSJSONSerialization JSONObjectWithData: параметры данных: ошибка kNilOptions: & errorJson]; –