Загрузить шаблоны FreeMarker из базы данных

Другой пример:

func getJason(url: NSURL, completionHandler: (String?, NSError?) -> Void ) -> NSURLSessionTask {

    var finalData: String!
    let task = NSURLSession.sharedSession().dataTaskWithURL(url) { (data, response, error) -> Void in

        if error != nil{

            completionHandler(nil, error)
            return
        }
        else{

        if let urlContent = data{

            do{
                let jsonData = try NSJSONSerialization.JSONObjectWithData(urlContent, options: NSJSONReadingOptions.MutableContainers)

                if let ip = jsonData["ip"]{

                    finalData = ip as? String
                    completionHandler(finalData, nil)
                    return
                }

            }catch{
                print("EMPTY")
            }

        }

    }
}
    task.resume()
    return task
}

Затем я назвал его в viewDidLoad

getJason(url) { (ipAddress, error) -> Void in

        if error != nil{

            print(error)
        }
        else{
            if let ip = ipAddress{          //To get rid of optional

        self.ipLabelDisplay.text = "Your Ip Address is: \(ip)"

            }

        }
    }
21
задан Dónal 20 August 2019 в 12:40
поделиться

2 ответа

Мы используем StringTemplateLoader для загрузки нашего tempates, который мы получили от дб (как предложенный Dan Vinton)

, Вот пример:

StringTemplateLoader stringLoader = new StringTemplateLoader();
String firstTemplate = "firstTemplate";
stringLoader.putTemplate(firstTemplate, freemarkerTemplate);
// It's possible to add more than one template (they might include each other)
// String secondTemplate = "<#include \"greetTemplate\"><@greet/> World!";
// stringLoader.putTemplate("greetTemplate", secondTemplate);
Configuration cfg = new Configuration();
cfg.setTemplateLoader(stringLoader);
Template template = cfg.getTemplate(firstTemplate);

Редактирование Вы не должны загружать все шаблоны при запуске. Каждый раз, когда мы получим доступ к шаблону, мы выберем его от DB и загрузим его через StringLoader, и путем вызова template.process () мы генерируем (в нашем случае) вывод XML.

28
ответ дан Ulf Lindback 20 August 2019 в 22:40
поделиться

Несколько путей:

  • Создают новую реализацию TemplateLoader, чтобы загрузить шаблоны из базы данных и передать его Вашему Конфигурация экземпляр с помощью setTemplateLoader() до загрузки любых шаблонов.

  • Использование StringTemplateLoader, который Вы настраиваете от своей базы данных, когда Ваше приложение запускается. Добавьте его к конфигурации как выше.

Редактирование в свете редактирования корреспондента, Ваша собственная реализация TemplateLoader похожа на способ пойти. Проверьте Javadoc здесь , это - простой небольшой интерфейс только с четырьмя методами, и его поведение хорошо документируется.

18
ответ дан Dan Vinton 20 August 2019 в 22:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: