2016-12-27 2 views
0

Я использую Alamofire для запросов, и я использую swiftyjson для разбора json.Определить глобальную переменную с помощью Alamofire + SwiftyJSON

Мне нужно определить глобальные переменные для других контроллеров представлений.

У меня есть этот код:

import UIKit 
import Alamofire 
import SwiftyJSON 

@UIApplicationMain 
class AppDelegate: UIResponder, UIApplicationDelegate { 

    var window: UIWindow? 

    struct Settings { 
     static var registration_url = String(); 
     static var login_url = String(); 
    } 

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 

     Alamofire.request("http://localhost/settings.php").responseJSON { response in 

      if response.result.isSuccess { 

       let json = JSON(data: response.data!); 

       Settings.registration_url = json["registration_url"].stringValue; 
       Settings.login_url = json["login_url"].stringValue; 

      } else { 

       Settings.registration_url = "http://localhost/register.php"; 
       Settings.login_url = "http://localhost/login.php"; 

      } 

     } 

     print(Settings.registration_url); 
     print(Settings.login_url) 

     return true 
    } 

} 

Я проверка отладки окно, и print(Settings.registration_url); это выглядит пустым

Почему?

Спасибо. Извините за мой бедный английский.

ответ

0

Ваша Settings Структура не является глобальной. Вы должны определить его вне класса, чтобы он был глобальным:

struct Settings { 
    static var registration_url = String(); 
    static var login_url = String(); 
} 

@UIApplicationMain 
class AppDelegate: UIResponder, UIApplicationDelegate { 

    var window: UIWindow? 

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 

     Alamofire.request("http://localhost/settings.php").responseJSON { response in 

      if response.result.isSuccess { 

       let json = JSON(data: response.data!); 

       Settings.registration_url = json["registration_url"].stringValue; 
       Settings.login_url = json["login_url"].stringValue; 

      } else { 

       Settings.registration_url = "http://localhost/register.php"; 
       Settings.login_url = "http://localhost/login.php"; 

      } 

     } 

     print(Settings.registration_url); 
     print(Settings.login_url) 

     return true 
    } 

}