2016-08-23 60 views
-2
{ 
    “QuizId” : “23566656” 
    “StartTime”:”23:30” 
    “EndTime”:”23:45” 
    “data”:[ 
     {“QuestionID”:”131313131”,“AnswerID”:“1233152”}, 
     {“QuestionID”:”131313141”,“AnswerID”:“1233152”}, 
     {“QuestionID”:”131313151”,“AnswerID”:“1233152”}, 
     {“QuestionID”:”131313161”,“AnswerID”:“1233152”}, 
     {“QuestionID”:”131313171”,“AnswerID”:“1233152”}, 
     {“QuestionID”:”131313181”,“AnswerID”:“1233152”}, 
     {“QuestionID”:”131313191”,“AnswerID”:“1233152”}, 
     {“QuestionID”:”131313101”,“AnswerID”:“1233152”}, 
    ] 
} 

你好,我想在运行时创建一个NSDictonary,这个结构应该与上面相似。任何帮助将升值感谢。如何在Swift中创建Dyanamic NSDictonary

我得到的解决方案感谢您的努力

变化不大我要让 ,因为我有莫代尔所有这些数据。

let info = self.playQuizArray[currentQuizIndex] as! playInfo 
    let Ainfo = info.answers[indexPath.row] as! AnswerInfo 
    let QuesID = info.quizQId 
    for i in 0..<playQuizArray.count { 
     data.append(["QuestionID": QuesID[i], "AnswerID": playQuizArray[i]]) // For Answer Ainfo.ansID 
    } 
    let dic = [ 
     "QuizId" : "23566656",// info.quizID 
     "StartTime" : "23:30", 
     "EndTime" : "23:45", 
     "data" : data 
    ] 
    print(dic) 

谢谢。

这里是模态

class AnswerInfo: NSObject { 

    var ansId :String? = "" 
    var ans :String? = "" 
    var ansImg :String? = "" 

    class func infoWith(dict: NSDictionary?) -> AnswerInfo { 
     let anInfo = AnswerInfo() 
     anInfo.wrapInfo(dict) 
     return anInfo 
    } 


    func wrapInfo(dict: NSDictionary?) { 
     if dict == nil { 
      return 
     } 
     self.ansId  = dict!.objectForKey("answerId") as? String 
     self.ans = dict!.objectForKey("AnsImage") as? String 
     self.ansImg = dict!.objectForKey("option") as? String 
    } 
} 

class playInfo: NSObject { 

    var quizId :   String? = "" 
    var quizQId :   String? = "" 
    var quizQuestion :  String? = "" 
    var answers = NSArray() 



class func PlayQuizInfo(dict: NSDictionary?) -> playInfo { 

let Pinfo = playInfo() 
    Pinfo.WrapPlayQuiz(dict) 
return Pinfo 
} 
    func WrapPlayQuiz(dict: NSDictionary?) { 
     if dict == nil { 
     return 
     } 
     self.quizId   = dict!.objectForKey("quizId") as? String 
     self.quizQuestion  = dict!.objectForKey("question") as? String 
     self.quizQId   = dict!.objectForKey("questionId")as? String 

     if let answer = dict?.objectForKey("keys") as? NSArray { 

     let AnsArray = NSMutableArray() 
      for ans in answer { 
      let ansInfo = AnswerInfo.infoWith(ans as? NSDictionary) 
       AnsArray.addObject(ansInfo) 
      } 
      self.answers = AnsArray 
     } 
    } 
} 
+0

你的代码是客观的C,但你在斯威夫特, –

+0

在SWIFT标记@ Anbu.Karthik –

回答

1

您可以使用快捷Dictionary[String: AnyObject]这种方式,而不是NSMutableDictionary

var data = [[String: AnuObject]]() 
for i in 0..<questionArr.count { 
    data.append(["QuestionID": questionArr[i], "AnswerID": answerArr[i]]) 
}   
let dic = [ 
    "QuizId" : "23566656", 
    "StartTime" : "23:30", 
    "EndTime" : "23:45", 
    "data" : data 
] 
print(dic) 
+0

Plaese帮助像我一样编辑感谢您的帮助。 @NDoc –

+0

@AvinashMishra是QuesID是数组?,也请这样的模型类'playInfo'和'answerinfo'给出更多的细节 –

+0

编辑完成根据您的需要,谢谢。 –

2

添加动态值对应的键,它会工作。

let dynamicDictionary = NSMutableDictionary() 
     dynamicDictionary.setValue("23566656", forKey: "QuizId") 
     dynamicDictionary.setValue("23:30", forKey: "StartTime") 
     dynamicDictionary.setValue("23:45", forKey: "EndTime") 

     let arrayOfDictionaries = NSMutableArray() 
     for _ in 0..<4{ 
      let questionAndAnswer = NSMutableDictionary() 
      questionAndAnswer.setValue("131313151", forKey: "QuestionID") 
      questionAndAnswer.setValue("1233152", forKey: "AnswerID") 
      arrayOfDictionaries.addObject(questionAndAnswer) 

     } 

     dynamicDictionary.setValue(arrayOfDictionaries, forKey: "data") 
     print(dynamicDictionary) 
0

希望这将帮助你:

//Contruct the dic like this 
var dic: [String: AnyObject] = ["QuizId": "23566656", 
           "StartTime": "23:30", 
           "EndTime": "23:45", 
           "data":[[String: String]](count: 7, repeatedValue: ["QuestionID":"131313131","AnswerID":"1233152"]) 
           ] 

// And now retrive value like this 

let quizId = dic["QuizId"] as! String 
let StartTime = dic["StartTime"] as! String 
let EndTime = dic["EndTime"] as! String 
let data = dic["data"] as! [[String: String]] 
+0

Plaese帮助,因为我编辑谢谢帮助。 –