2017-06-20 39 views
0

我得到这个错误:“属性初始化中不能使用实例成员‘服务器’;在此之前的自我的可用运行属性初始值设定”在这行我的代码不能使用实例成员属性初始化中“服务器”

编辑

import UIKit 
import ChinoOSXLibrary 

class LoginCL: UIViewController { 


    @IBOutlet weak var emailField: UITextField! 

    @IBOutlet weak var passField: UITextField! 

    var loggedUser: LoggedUser! 
    var customerId = "xxx" 
    var customerKey = "xxx" 
    var server = "https://api.test.chino.io/v1" 

    var chino = ChinoAPI.init(hostUrl: server, customerId: customerId, customerKey: customerKey) 


    override func viewDidLoad() { 
     super.viewDidLoad() 

     // Do any additional setup after loading the view. 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

我怎么能解决它?错误是在这一行

var chino = ChinoAPI.init(hostUrl: server, customerId: customerId, customerKey: customerKey) 
+0

这意味着你试图用'self'所有的财产被正确初始化之前。请发布完整的代码,而不仅仅是提供错误的代码。 –

+0

做@MarcoPace – bero

回答

1

在初始化之前,你不能使用视图控制器和属性的实例,所以你只需要移动你的ChinoAPI初始化viewDidLoad

var chino: ChinoAPI! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    chino = ChinoAPI(hostUrl: server, customerId: customerId, customerKey: customerKey) 
} 

另一种选择是从您的视图控制器将所有的硬编码值ChinoAPI,但我不知道是否会适合你的逻辑阱。

此外,你可以移动值初始化,如:

ChinoAPI.init(hostUrl: "https://api.test.chino.io/v1", customerId: "xxx, customerKey: "xxx") 
+0

谢谢@livenplay – bero

0

你需要在视图控制器init方法后使用self。你可以在viewDidLoad中初始化你的var chino,或者如果你需要在初始化视图控制器初始化方法之前初始化它,你需要使用硬编码字符串

+0

我需要在init视图控制器方法之前执行它,你可以做我的例子吗? – bero