2016-04-15 13 views
0

nehmen wir an, dass mein Modell ist folgendes:mein Modell Teil von MVC von Array Zum Wörterbuch

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) 
    } 

} 

Was würde man tun, um dieses Modell zu verwandeln Benutzernamen zu haben, und userAnswer werden ein Wörterbuch verbunden? wo die Funktion addUserInfo noch funktionieren würde. Vielen Dank!

Antwort

1

Sie ein funcion zurückgeben Array oder eine neue Eigenschaft mit nur erhalten methord verwenden können, wie diese

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

können Sie nur ein Wörterbuch haben, die Benutzer Antworten wie diese abgebildet Benutzernamen repräsentiert:

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

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

Sie müssen Foundation nicht importieren, da Sie keine Foundation-Objekte verwenden.

0

Wenn Sie ein [String: String]:

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

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

    return result 
} 

Oder wenn Sie [[String: String]] wollen:

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

Das wird nicht funktionieren, würde ich den Code in einem Compiler versuchen, da es mehrere Fehler drin sind . – ColGraff

+0

Sorry, war in Eile zu gehen. Einige Änderungen vorgenommen und vergessen, es anzuwenden. – Eendje

+0

Ich dachte, es könnte so etwas sein! – ColGraff

Verwandte Themen