2016-04-15 23 views
0

讓我們假設我的模型有以下幾點:從數組轉換MVC的我的模型一部分字典

import Foundation 

class Model { 


    var userName = [String]() 
    var userAnswer = [String]() 
    var userInfo = [String]() 
    var name:String 
    var answer:String 

    init(){ 
     self.name = "" 
     self.answer = "" 

    } 

    func addUserInfo(name:String, answer:String) -> Void { 
     userName.append(name) 
     userAnswer.append(answer) 
    } 

} 

什麼人會做改變這個模式對用戶名和userAnswer成爲一個加盟字典?函數addUserInfo仍然可以工作。謝謝!

回答

1

你可以使用一個函數,返回一個數組或一個新的屬性只有get methord,就這樣

var userNamesAndUserAnswers:[[String:String]] 
{ 
    get 
    { 
     var values:[[String:String]]=[] 
     for index in 0..<userName.count 
     { 
      values.append(["name":userName[index],"answer":userAnswer[index]]) 
     } 
     return values 
    } 
} 
1

你可以只是有代表映射到用戶回答類似這樣的用戶名字典:

class Model { 
    var userInfo = [String:String]() 

    func addUserInfo(name:String, answer:String) { 
    userInfo[name] = answer 
    } 
} 

由於您沒有使用任何Foundation對象,因此不需要導入Foundation。

0

如果你想有一個[String: String]

var dict: [String: String] { 
    var result: [String: String] = [:] 

    zip(userName, userAnswer).forEach { result[$0.0] = $0.1 } 

    return result 
} 

或者,如果你想[[String: String]]

var dict2: [[String: String]] { return zip(userName, userAnswer).map { [$0.0: $0.1] } } 
+0

這是行不通的,我會嘗試在編譯器的代碼,因爲有它的多個錯誤。 – ColGraff

+0

對不起,急着離開。做了一些改變,並忘記應用它。 – Eendje

+0

我認爲這可能是這樣的! – ColGraff

相關問題