如何在值为Dynamic(Swift)时增加Array的索引

时间:2016-08-09 05:27:55

标签: ios arrays swift

我正在获取一个包含(带有数组的字典)的动态数组,并希望增加数组索引并继续执行下一个字典。

在swapLibs中解析值

之后
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)"
        }
    })
}

The Modal是

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"
            },
            {  },
            {  },
            {  },
            {  }
         ]
      },
      {  },
      {  },
      {  },
      {  },
      {  },
      {  },
      {  },
      {  },
      {  },
      {  },
      {  }
   ]
}

每个词典都包含与上面相同的键

任何帮助都会得到赞赏。谢谢。

1 个答案:

答案 0 :(得分:1)

由于我没有ServiceManager,所以我假设创建了这个代码。它可能会解决您将所有数据保存到一个数组的问题。它还将数组中的键添加为对象。

编辑1:正确的QuizKey对象数组形成。如果发生任何类型的错误,请告诉我,因为我无法在最后测试它。

编辑2:我已经使一般的ViewController工作得很好。尝试运行这个View Controller文件,你会看到结果。

class TestVC: UIViewController {

    //An Array similar to the response you are getting from the server
    var response:[AnyObject] = [
        [
            "quizId" : "1111",
            "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"
                ],
                [
                    "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://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"
                ],
                [
                    "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
    }

}