2010-09-03 9 views
1

Je porte un programme que j'ai écrit sur C# à Cocoa et j'essaie de comprendre comment utiliser XML pour aller en ligne sur mon site web, récupérer le fichier et l'analyser, puis comparer la version boîte de message pour demander si vous voulez ouvrir votre navigateur à la page de mise à jour.Mise à jour Check in Objective-C? Venant de C#

Voici le code de C#:

public void CheckVersion() 
    { 
     Version newVersion = null; 
     string url = ""; 
     string newfeatures = ""; 
     try 
     { 
      string xmlURL = "http://myurl.com/version.xml"; 
      XmlRead = new XmlTextReader(xmlURL); 
      XmlRead.MoveToContent(); 
      string elementName = ""; 
      if ((XmlRead.NodeType == XmlNodeType.Element) && 
       (XmlRead.Name == "myProgram")) 
      { 
       while (XmlRead.Read()) 
       { 
        if (XmlRead.NodeType == XmlNodeType.Element) 
         elementName = XmlRead.Name; 
        else 
        { 
         if ((XmlRead.NodeType == XmlNodeType.Text) && 
          (XmlRead.HasValue)) 
         { 
          switch (elementName) 
          { 
           case "version": 
            newVersion = new Version(XmlRead.Value); 
            break; 
           case "url": 
            url = XmlRead.Value; 
            break; 
           case "newfeatures": 
            newfeatures = XmlRead.Value; 
            break; 
          } 
         } 
        } 
       } 
      } 
     } 
     catch (Exception) 
     { 
      MessageBox.Show("Could not connect to update checking server."); 
     } 
     finally 
     { 
      if (XmlRead != null) XmlRead.Close(); 
     } 
     Version curVersion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version; 
     if (curVersion.CompareTo(newVersion) < 0) 
     { 
      string title = "New Version Online"; 
      string question = "Download new version? \nmyProgram Version: " + newVersion.ToString(); 
      if (DialogResult.Yes == 
      MessageBox.Show(this, question + "\n\n" + newfeatures, title, 
          MessageBoxButtons.YesNo, 
          MessageBoxIcon.Question)) 
      { 
       System.Diagnostics.Process.Start(url); 
      } 
     } 
    } 

Je suis assez nouveau pour le cacao et la plupart de ce code C# était un extrait alors des conseils ou de l'aide serait génial.

Merci

+2

Si votre déploiement sur OSX, alors vous devriez simplement utiliser Sparkle - http://sparkle.andymatuschak.org/ –

+0

Merci pour la réponse, j'ai réfléchi à ce sujet, mais honnêtement, je pense que c'est trop pour un simple application, cette application est très petite et je ne veux pas doubler ou tripler sa taille pour ajouter un cadre de vérification de mise à jour – Hector204

+1

Hector204: Sparkle est assez petit. Plus de la moitié de sa taille sont les ressources de l'interface utilisateur dans la douzaine de langues qui l'accompagnent. Donc, c'est le même vérificateur de mise à jour que vous écririez, mais un peu plus puissant, déjà écrit, déjà (principalement) débogué, et déjà traduit dans une douzaine de langues. Si vous préférez avoir un demi-Mo de mémoire, supprimez simplement les langues que vous ne supportez pas. –

Répondre

3

Pour les mises à jour la meilleure solution disponible est Étincelle, comme les autres l'ont déjà signalé.

Mais si vous voulez toujours savoir comment charger du XML à partir d'un serveur et l'analyser, lisez la documentation du URL Loading System et du NSXMLDocument. Avec cela, il n'est pas difficile d'obtenir et d'analyser les données, mais vous ne serez pas en mesure de tout bourrer dans une seule méthode. NSURLConnection fonctionne avec les délégués afin que vous n'ayez pas à bloquer le thread en cours pendant qu'il obtient les données du serveur.

+0

Merci beaucoup, yep sparkle a parfaitement fonctionné, mieux que je l'avais espéré. En venant de Windows je ne m'attendais pas à ce que ce soit si facile. lol – Hector204