2016-05-08 13 views
0

Ich hoffte, dies ohne Hilfe zu lösen, aber ich scheine in Kreisen zu gehen, obwohl ich weiß, dass es kein schwieriges Thema ist. So wird jede Hilfe sehr geschätzt.bevölkern TableView von heruntergeladenen Plist in Swift

Ich habe meine App eingerichtet, um eine Karte und eine TableView aus Daten in einem Plist aufzufüllen. Alles funktioniert gut. Aber jetzt lade ich den Plist von einem Server herunter, der die Datei natürlich in ein Dokumentenverzeichnis legt. Meine Frage ist, was ist der Swift-Code für das Lesen aus dem Verzeichnis und nicht aus dem Bündel?

Dies ist ein Teil des Codes zum Lesen aus dem App-Paket (beachten Sie, dass alles funktioniert, aber ich nicht den gesamten Code hier bereitstellen. Bitte zeigen Sie mich nicht auf Apple Developer Site - ich habe geschaut):

if let path = NSBundle.mainBundle().pathForResource("testData", ofType: "plist"){ 
     if let arrayOfDictionaries = NSArray(contentsOfFile: path){ 
      for dict in arrayOfDictionaries { 
       tableData.append(dict.objectForKey("title") as! String) 
       stateData.append(dict.objectForKey("state") as! String) 
       codeData.append(dict.objectForKey("code") as! String) 
       infoData.append(dict.objectForKey("info") as! String) 


      } 
     } 

Dies ist der Code für den plist vom Server herunterzuladen:

func URLSession(session: NSURLSession, 
       downloadTask: NSURLSessionDownloadTask, 
       didFinishDownloadingToURL location: NSURL){ 

    let path = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true) 
    let documentDirectoryPath:String = path[0] 
    let fileManager = NSFileManager() 
    let destinationURLForFile = NSURL(fileURLWithPath: documentDirectoryPath.stringByAppendingString("/testData.plist")) 

    if fileManager.fileExistsAtPath(destinationURLForFile.path!){ 
     showFileWithPath(destinationURLForFile.path!) 
    } 
    else{ 
     do { 
      try fileManager.moveItemAtURL(location, toURL: destinationURLForFile) 
//    show file 
      showFileWithPath(destinationURLForFile.path!) 
     }catch{ 
      print("An error occurred while moving file to destination url") 
     } 
    } 
} 

Antwort

0

Managed diese zu sortieren. Seltsam, wie man stundenlang über etwas nachdenken kann. Dann am nächsten Morgen ist es offensichtlich - und nicht ohne ein wenig Hilfe von anderen SO-Postings :-) !!!

let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as NSString 
    let sourcePath = documentsPath.stringByAppendingPathComponent("testData.plist") 
    let dict = NSDictionary(contentsOfFile: sourcePath as String)