Проверка обновлений в Objective-C?Исходя из C # - PullRequest
1 голос
/ 03 сентября 2010

Я портирую программу, написанную на C #, на Какао и пытаюсь выяснить, как использовать XML для подключения к Интернету на моем веб-сайте, получить файл и разобрать его, затем сравнить версию и открыть окно сообщенияспросить, хотите ли вы открыть свой браузер на странице обновления.

Вот код из 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);
            }
        }  
    }

Я довольно новичок в какао, и большая часть этого кода C # быласниппет, так что любой совет или помощь будут великолепны.

Спасибо

1 Ответ

3 голосов
/ 04 сентября 2010

Для обновлений наилучшим доступным решением является Sparkle, как уже отмечали другие.

Но если вы все еще хотите знать о загрузке XML с сервера и его разборе, вам следует прочитать документацию для Системы загрузки URL и NSXMLDocument . При этом нетрудно получить и проанализировать данные, но вы не сможете собрать все в один метод. NSURLConnection работает с делегатами, поэтому вам не нужно блокировать текущий поток, пока он получает данные с сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...