arrays - 如何在多个数组的索引处保存多个元素?

标签 arrays swift parse-platform

我正在建立这样的数组......

var vidRankArray = [String]()
var vidIdArray = [String]()
var vidTitleArray = [String]()
var vidDescriptionArray = [String]()
var vidImageArray = [String]()

像这样返回解析信息并插入信息......

override func viewWillAppear(animated: Bool)
    {
        let query = PFQuery(className: "UserVideos")
        query.whereKey("userObjectId", equalTo: PFUser.currentUser()!.objectId!)
        query.findObjectsInBackgroundWithBlock { (vid:Array?, error:NSError?) -> Void in
            if vid != nil
            {

                for items in vid!
                {
                    var i:Int
                    i = 0
                    if items["vid1"] != nil
                    {
                        if let myfav1 = items["vid1"] as? NSArray
                        {
                            let id = myfav1[0] as! String
                            let rank = myfav1[1] as! String
                            let title = myfav1[2] as! String
                            let description = myfav1[3] as! String
                            let image = myfav1[4] as! String
                            self.vidRankArray.insert(rank, atIndex: i)
                            self.vidIdArray.insert(id, atIndex: i)
                            self.vidTitleArray.insert(title, atIndex: i)
                            self.vidDescriptionArray.insert(description, atIndex: i)
                            self.vidImageArray.insert(image, atIndex: i)
                        }
                    }
                    if items["vid2"] != nil
                    {
                        if let myfav2 = items["vid2"] as? NSArray
                        {
                            let id = myfav2[0] as! String
                            let rank = myfav2[1] as! String
                            let title = myfav2[2] as! String
                            let description = myfav2[3] as! String
                            let image = myfav2[4] as! String
                            self.vidRankArray.insert(rank, atIndex: ++i)
                            self.vidIdArray.insert(id, atIndex: ++i)
                            self.vidTitleArray.insert(title, atIndex: ++i)
                            self.vidDescriptionArray.insert(description, atIndex: ++i)
                            self.vidImageArray.insert(image, atIndex: ++i)
                        }
                    }
                    if items["vid3"] != nil
                    {
                        if let myfav3 = items["vid3"] as? NSArray
                        {
                            let id = myfav3[0] as! String
                            let rank = myfav3[1] as! String
                            let title = myfav3[2] as! String
                            let description = myfav3[3] as! String
                            let image = myfav3[4] as! String
                            self.vidRankArray.insert(rank, atIndex: ++i)
                            self.vidIdArray.insert(id, atIndex: ++i)
                            self.vidTitleArray.insert(title, atIndex: ++i)
                            self.vidDescriptionArray.insert(description, atIndex: ++i)
                            self.vidImageArray.insert(image, atIndex: ++i)

                        }
                    }

我试图将每个视频中的每个元素按顺序插入到各自的数组中。我有 if item != nil 语句,这样如果没有特定的项目,就可以跳过它。我在做这件事时遇到了麻烦。它要么抛出数组超出索引错误,要么抛出索引超出范围。令人困惑的是,当我添加所有项目时,它工作得非常完美。请给我任何想法。

***** 更新 ***** 我添加了这个...

for items in vid!
                {
                    for var i=0; i<vid!.count; ++i
                    {
                    if items["vid1"] != nil

现在我的控制台打印出这个......

["2", "2", "1", "1"]
["3fy4cqWMhyI", "3fy4cqWMhyI", "TI0DGvqKZTI", "TI0DGvqKZTI"]
["Wonder Girls (원더걸스) - Be My Baby", "Wonder Girls (원더걸스) - Be My Baby", "EXO-K_중독(Overdose)_Music Video", "EXO-K_중독(Overdose)_Music Video"]
["Wonder Girls\' 2nd Album Title Song \"Be My Baby\" Copyrightⓒ 2011. JYP Entertainment. All Rights Reserved ▣ Wonder Girls 2nd Album Site ...", "Wonder Girls\' 2nd Album Title Song \"Be My Baby\" Copyrightⓒ 2011. JYP Entertainment. All Rights Reserved ▣ Wonder Girls 2nd Album Site ...", "The music video of EXO\'s \'Overdose\' is released! EXO is back with a new mini album with a more powerful performance that will make you \'overdose\' on their ...", "The music video of EXO\'s \'Overdose\' is released! EXO is back with a new mini album with a more powerful performance that will make you \'overdose\' on their ..."]
["https://i.ytimg.com/vi/3fy4cqWMhyI/default.jpg", "https://i.ytimg.com/vi/3fy4cqWMhyI/default.jpg", "https://i.ytimg.com/vi/TI0DGvqKZTI/default.jpg", "https://i.ytimg.com/vi/TI0DGvqKZTI/default.jpg"]

感觉我已经很接近了。有什么想法为什么它给我的每两个都是乱序的吗?

*****更新********

我让它可以工作了。我删除了 var i = 0 语句并明确了 insertAtIndex。当我确实有 vid1 和 vid2 时,它工作得很好。我做了 vid4,它超出了范围,因为它没有看到 vid3 或索引 2。我怎样才能让它跳过并简单地为保存的信息添加信息,即我试图使用 var i=0; 来完成的事情;我

最佳答案

只需删除 var i、每个 insert(variable, atIndex: index) 并将其替换为 append(variable)。你的整数代码非常困惑,有时你增加 i,有时则不。使用 append(),您确信它将把您的项目附加到数组中,因此它将是最后一个,并且不会显示范围错误。

关于arrays - 如何在多个数组的索引处保存多个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33767505/

相关文章:

php - 追加到数组会替换数组中的所有元素

javascript - 如何 .concat 具有至少一个相同元素的多个数组?

sql - 扩展存储在 JSONB 中的对象数组

ios - 2019 年编写 Apple 帮助手册

ios - 如何更改 UITabBarItem 文本的颜色

ios - 在 Swift 中使用 KNSemiModalViewController

swift - 如何设置 Parse 客户端推送通知

java - 使用字符串元组作为 HashMap 的键

javascript - 在云代码中测试用户名是否在 Parse 的 User 类中

android - 在即时应用程序上启用推送通知