我正在建立这样的数组......
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/