2017-02-22 4 views
2

я есть словарь, как это:Swift: Сравнение словарь Ключи

var dataDictionary : [String:String] = ["Result" : "result", "Date Added" : "dateAdded", "Entered By" : "enteredBy"] 

хранить этот ключ и значения я сделал массив враг ключ и значения, как это:

var selectedDictKeys :[String] = [String]() 
var selectedDictValues :[String] = [String]() 

и хранится ключи и значения в массиве, как это:

self.selectedDictKeys = Array(self.dataDictionary.keys) 
self.selectedDictValues = Array(self.dataDictionary.values) 

Это мой класс defaultName Модель:

class DefaultNameModel: EVObject { 
    var key : String = "" 
    var value : String = "" 
} 

Теперь, как я могу печатать установить значение для значений, как ..

self.selectedDictKeys = Array(self.dataDictionary.keys) 
self.selectedDictValues = Array(self.dataDictionary.values) 

var dataSet = [DefaultNameModel]() 
for i in 0...(self.selectedDictKeys.count-1) 
{ 
    let dataRow = DefaultNameModel() 
    dataRow.key = String(self.selectedDictKeys) 

    if dataRow.key == "Result" 
    { 
     dataRow.value == "Success" 
     dataSet.append(dataRow) 
     print("The data Row is\(dataRow)")   
    } 

    if dataRow.key == "Date Added" 
    { 
     dataRow.value == "2016-12-12" 
     dataSet.append(dataRow) 
     print("The data Row is\(dataRow)") 
    } 

    if dataRow.key == "Entered By" 
    { 
     dataRow.value == "Me" 
     dataSet.append(dataRow) 
     print("The data Row is\(dataRow)") 
    } 
} 
+0

Если вы знаете ключ и значение, то почему, почему вы создаете словарь, просто создайте объект 'DefaultNameModel' и объект в массиве. –

+0

Мне нужно добавить это в таблицу – Sam

+0

, так как я могу это сделать. Не могли бы вы предложить мне .. ?? – Sam

ответ

1
 var dataSet = [DefaultNameModel]() 
     for i in self.selectedDictKeys 
     { 
      let dataRow = DefaultNameModel() 
      dataRow.key = i 

      if dataRow.key == "Result" 
      { 
       dataRow.value == "Success" 
       dataSet.append(dataRow) 
       print("The data Row is " + dataRow.Key + " " + dataRow.value) 

      } 

      if dataRow.key == "Date Added" 
      { 
       dataRow.value == "2016-12-12" 
       dataSet.append(dataRow) 
       print("The data Row is " + dataRow.Key + " " + dataRow.value) 

      } 
      if dataRow.key == "Entered By" 
      { 
       dataRow.value == "Me" 
       dataSet.append(dataRow) 
       print("The data Row is " + dataRow.Key + " " + dataRow.value) 

      } 
     } 
+0

Спасибо .... :) сохранен в день – Sam

2
for key in self.selectedDictKeys { 
    let dataRow = DefaultNameModel() 
    dataRow.key = key 

    switch key { 
    case "Result": 
     dataRow.value == "Success" 
    case "Date Added": 
     dataRow.value == "2016-12-12" 
    case "Entered By": 
     dataRow.value == "Me" 
    default: 
     dataRow.value == "" 
    } 

    dataSet.append(dataRow) 
    print("The data Row is\(dataRow)") 
} 
+0

спасибо за этот ответ ..... он тоже работает – Sam

1

Я вижу, что вы используете EVReflection (EVObject ваш базовый тип). Затем вы можете инициировать свои объекты на основе словаря. Почему вы не ставите значения для данных в словаре? И даже лучше, почему бы вам не создать объект с регулярными свойствами, а не с ключом и значением. Вот пример кода, который работает:

func testxx() { 
    // Why not setting the values in the dictionary? 
    let dataDictionary: NSDictionary = ["Result" : "Success", "Date Added" : "2016-12-12", "Entered By" : "Me"] 

    // Then you could just map it to the model using: 
    let defaultNameModel: [DefaultNameModel] = dataDictionary.map { DefaultNameModel(dictionary: ["key": $0.key, "value": $0.value]) } 
    print("defaultNameModelOld = \(defaultNameModel)") 

    // But you could directly map it to a real model 
    let defaultNameModelNew = DefaultNameModelNew(dictionary: dataDictionary) 
    print("defaultNameModelNEw = \(defaultNameModelNew)") 
} 

class DefaultNameModel: EVObject { 
    var key: String? 
    var value: String? 
} 

class DefaultNameModelNew: EVObject { 
    var Result: String? 
    var Date_Added: String? 
    var Entered_By: String? 
} 
+0

да спасибо :) – Sam

Смежные вопросы