2016-08-23 7 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を作成します。どんなヘルプもおかげさまで感謝しています。Swyiftで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であるが、私が助けを編集感謝をしたとして、あなたはSWIFTにAnbu.Karthik @スウィフト、 –

+0

に –

答えて

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 Helpを編集しました。 –

関連する問題