如何在值为Dynamic(Swift)时增加Array的索引 [英] How To increase index of Array when the value is Dynamic (Swift)

查看:98
本文介绍了如何在值为Dynamic(Swift)时增加Array的索引的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I am Getting a Dynamic Array which Consist (Dictionary with Array ) and want to increase the Index of Array and will go on to Next Dictionary on action.

之后解析swapLibs中的值

After Parsing The Value in 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)"
        }
    })
}



< p >和模态是

And The Modal is

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

每个词典包含相同的键如上

Each Dictionary is Containing same Key As above

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

Any Help Will Be Appreciated.Thanks.

推荐答案

因为我不喜欢在我的最后有 ServiceManager 所以我假设创建了这个代码。它可以解决您将所有数据保存到一个数组的问题。它还将数组中的键添加为对象。

As I don't have ServiceManager at my end so I have created this code hypothetically. It might solve you issue of saving all data in to one array. It also adds keys in to array as an object.

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

EDIT 1 : correct QuizKey object array formation. Let me know if any kind of error occurs, as I am unable to test it at my end.

编辑2:我已经使一般的ViewController工作得很完美。试试运行此View Controller文件,您将看到结果。

Edit 2: I have made a general ViewController its working perfectly.Try running this View Controller file and you will see the results.

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
    }

}

这篇关于如何在值为Dynamic(Swift)时增加Array的索引的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆