2017-07-18 7 views
0

Ich bin mit dem CrossDownManager Plugin für Xamarin Forms Here Wenn ich die Methode laufen auf Android als erwartet verarbeitet. Auf iOS Debug.Writeline("Success!") wird nicht wie auf Android getroffen. HierXamarin Forms - iOS nicht richtig verarbeiten

ist der Code:

void ViewImage(string imageLink) 
    { 
     var downloadManager = CrossDownloadManager.Current; 
     downloadManager.PathNameForDownloadedFile = new System.Func<IDownloadFile, string>(file => 
        { 
         string path = DependencyService.Get<IImageSaver>().Save("YHTS" + DateTime.Today.Ticks.ToString() + ".jpg"); 
         Debug.WriteLine("Success!"); 
          return path; 
         }); 

     try 
     { 
      var file = downloadManager.CreateDownloadFile(imageLink); 
      Debug.WriteLine("file created"); 
      downloadManager.Start(file); 
      Debug.WriteLine("downloadstarted"); 
     } 
     catch (Exception e) 
     { 
      Debug.WriteLine(e.ToString()); 
     } 
    } 

Für das Leben von mir, ich kann nicht herausfinden, warum das, dass Code-Block nicht verarbeitet wird. Irgendwelche Ideen?

Antwort

1

Dies ist ein interessantes Problem, da Ihr Code technisch wie erwartet funktionieren sollte. Ich habe ein wenig zu graben getan und fand eine Antwort auf eine ähnliche Frage here.

Ihre Möglichkeiten sind viele ... einschließlich:

DEBUG Präprozessor wie Sie in Ihrer Frage zeigen.

Verwendung System.Diagnostic.Debug.WriteLine. Alle Anrufe zu Debug * wird vom Compiler entfernt werden aufgrund der [Conditional ("DEBUG")] Attribut angewendet wird.

Erstellen Sie Ihr eigenes "Logger" Klasse als Wrapper für die stdout Schriftsteller und [Conditional ("DEBUG")] es

Verwenden Fody und neu weben die Baugruppen/entfernen NOP/redirect die Console.WriteLine Ich tun dies, um die Anrufe in internen Protokoll umleiten und auf Absturz oder Benutzerstat Anfragen, leiten Sie dieses Protokoll an unsere Absturzberichte Server. Usw .....

So gibt es ein paar Alternativen zu prüfen, eine der häufigsten Vorschläge, die ich gesehen habe, ist der vollständig qualifizierte Referenz für WriteLine(); als solche zu verwenden:

System.Console.WriteLine("woop woop"); 

Ich würde vorschlagen, das oben genannte zuerst zu versuchen.