2015-11-14 22 views
0

我從我的API中提取數據並在我的課程中初始化這些數據。Swift 2恢復類的值

class User { 
init(login: NSString, email: NSString, last_name: NSString, first_name: NSString) { 
    self.login = login 
    self.email = email 
    self.last_name = last_name 
    self.first_name = first_name 
} 
var login: NSString = "" 
var email: NSString = "" 
var last_name: NSString = "" 
var first_name: NSString = "" } 

func extract_data_user(Data: NSDictionary) { 
let login: NSString = Data.valueForKey("login") as! NSString 
let internal_email: NSString = Data.valueForKey("internal_email") as! NSString 
let lastname: NSString = Data.valueForKey("lastname") as! NSString 
let firstname: NSString = Data.valueForKey("firstname") as! NSString 
_ = User(login: login, email: internal_email, last_name: lastname, 
    first_name: first name) } 

我想創建一個功能用於顯示該數據,但是,當我創建例如變量「VAR用戶=用戶()」的Xcode要求我插入所有的參數。

我想恢復的例子'登錄'的字符串沒有初始化呢。

回答

0

Xcode要求您插入所有參數,因爲您只有一個User類的初始化程序,它接受所有參數。如果你想要做這樣的事情:

let user = User() 

您必須添加其他初始化到您的User類:

class User { 
    init() { 
     // code... 
    } 

    // remaining code of User class... 
} 

編輯

,也是你的代碼看起來非常糟糕。對我來說,它應該如下所示:

class User { 
    var login: String? 
    var email: String? 
    var lastName: String? 
    var firstName: String? 

    init(login: String, email: String, lastName: String, firstName: String) { 
     self.login = login 
     self.email = email 
     self.lastName = lastName 
     self.firstName = firstName 
    } 

    convenience init(data: NSDictionary) { 
     let login = data.valueForKey("login") as! String 
     let email = data.valueForKey("internal_email") as! String 
     let lastName = data.valueForKey("lastname") as! String 
     let firstName = data.valueForKey("firstname") as! String 
     self.init(login: login, email: email, lastName: lastName, firstName: firstName) 
    } 

    convenience init() { 
     self.init(login: "", email: "", lastName: "", firstName: "") 
    } 
} 
+0

謝謝您的回答,但我不已瞭解了我米假設要做。初始化另一個意味着什麼? – Guillaume

+0

你需要添加另一個初始化程序到你的User類,就像我的答案一樣。 –

+0

我剛剛編輯了我的帖子,所以你可以看看我看到你的'用戶'類 –

0

如果不先初始化某個類的屬性,則無法獲取該屬性的值。

您應該創建一個

init(data:NSDictionary){ 
    let login: NSString = data.valueForKey("login") as! NSString 
    let internal_email: NSString = data.valueForKey("internal_email") as! NSString 
    let lastname: NSString = data.valueForKey("lastname") as! NSString 
    let firstname: NSString = data.valueForKey("firstname") as! NSString 
    _ = User(login: login, email: internal_email, last_name: lastname, 
    first_name: first name)} 

然後說:

let user = User(data) 

現在你可以說

print(user.login)