使用 Alamofire + SwiftyJSON 定义全局变量
Posted
技术标签:
【中文标题】使用 Alamofire + SwiftyJSON 定义全局变量【英文标题】:Define global variable with Alamofire + SwiftyJSON 【发布时间】:2016-12-27 18:37:12 【问题描述】:我使用 Alamofire 进行请求,我使用 swiftyjson 进行 json 解析。
我需要为其他视图控制器定义全局变量。
我有这个代码:
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);
看起来是空白的
为什么?
谢谢。对不起我的英语不好。
【问题讨论】:
【参考方案1】:您的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
【讨论】:
以上是关于使用 Alamofire + SwiftyJSON 定义全局变量的主要内容,如果未能解决你的问题,请参考以下文章
在 Swift 中将 Alamofire 结果解析为对象(使用:Alamofire、SwiftyJSON 和 ObjectMapper)
swift、Alamofire、SwiftyJSON:如何解析 arrayObject
数据未使用 Alamofire + SwiftyJSON 加载到 UITableView