gpt4 book ai didi

arrays - 在数组中存储数据的问题 - Swift

转载 作者:行者123 更新时间:2023-11-30 11:35:09 24 4
gpt4 key购买 nike

我目前的设置如下:

我正在 Firebase 中运行查询以提取流派数组中的所有流派,如下所示:

var genresLabelIndex : [String] = ["Horror", "Fiction", "Romance"]

然后我为每个流派创建一个空白数组,以便能够在每个区域中存储流派的信息,如下所示:

var horrorData = [InformationForFeed]()
var fictionData = [InformationForFeed]()
var romanceData = [InformationForFeed]()

InformationForFeed 看起来像这样:

class InformationForFeed {


fileprivate var _uploadKey:String!
fileprivate var _userKey:String!
fileprivate var _imageURL:String!
fileprivate var _socialMedia:[String]



var uploadKey:String!{
return _uploadKey
}
var userKey:String!{
return _userKey
}
var imageURL:String!{
return _imageURL
}


init(dictionary:Dictionary<String,AnyObject>, socials: [String]) {

_socialMedia = socials

if let uploadKey = dictionary["upload_key"] as? String {
self._uploadKey = uploadKey
}
if let userKey = dictionary["user_key"] as? String {
self._userKey = userKey
}
if let imageURL = dictionary["imageUrl"] as? String {
self._imageURL = imageURL
}
}
}

然后我创建一个流派数组列表的数组,如下所示:

1)首先,我创建一个空数组,如下所示:

var genreArrayIndex : [[InformationForFeed]] = []

2)然后在 UIView 的 init() 中,我设置数组中的内容,如下所示:

genreArrayIndex = [self.horrorData, self.fictionData, self.romanceData]

然后我将运行一个名为 getData() 的函数这将运行我的查询并开始存储信息。

我将每种类型的信息存储在 tempArray 中,然后我设置genreArrayIndex[index]等于 tempArray然后清除 tempArraygetData中所示以下。

func getData() {

for genre in genresLabelIndex {
let dbReference = Database.database().reference().child("genres").child(genre)
let query = dbReference.queryLimited(toLast: 6)


query.observeSingleEvent(of: .value, with: { (snapshot : DataSnapshot) in

if snapshot.childrenCount > 0 {

for s in snapshot.children.allObjects as! [DataSnapshot] {

let item = s.value as! Dictionary<String,AnyObject?>
let facebook = (s.childSnapshot(forPath: "social_links").value as? NSDictionary)?["facebook_link"]
let audible = (s.childSnapshot(forPath: "social_links").value as? NSDictionary)?["audible_link"]
let amazon = (s.childSnapshot(forPath: "social_links").value as? NSDictionary)?["amazon_link"]

var socialsArray = [String]()

if facebook != nil {
socialsArray.append(facebook! as! String)
} else {
socialsArray.append("nil")
}

if audible != nil {
socialsArray.append(audible! as! String)
} else {
socialsArray.append("nil")
}

if amazon != nil {
socialsArray.append(amazon! as! String)
} else {
socialsArray.append("nil")
}

let data = InformationForFeed(dictionary: item as Dictionary<String,AnyObject>, socials: socialsArray)

self.newArray.append(data)
}


}


self.genreArrayIndex[self.genreArrayIndexCount] = self.newArray
self.genreArrayIndexCount = self.genreArrayIndexCount + 1
self.newArray.removeAll()

self.internalIndex = self.internalIndex + 1
if self.internalIndex == self.genresLabelIndex.count {
self.tableView.reloadData()
}


})

}

}

我的tempArray看起来像这样: var newArray = [InformationForFeed]()

index看起来像这样:

var genreArrayIndexCount : Int = 0

现在问题来了......

所有信息都正确存储在 genreArrayIndex 中.....但是...它实际上并没有将信息存储在存储在 genreArrayIndex 中的数组中。 .

换句话说,如果你要 print(self.genreArrayIndex)它将被完全填充。但如果你要print(self.fictionData)它将是空白的。

我该如何解决这个问题?

最佳答案

数组是一种值类型。这意味着它的内容是副本。使用空的 horrorData(和其他)初始化 genreArrayIndex,然后使用 getData() 填充它也不会将数据复制回 恐怖数据。我建议消除

genreArrayIndex = [self.horrorData, self.fictionData, self.romanceData]

并用计算属性替换 horrorDatafictionData、...。也许像这样。

var horrorData: [InformationFeed] {
return genreArrayIndex[0]
}

关于arrays - 在数组中存储数据的问题 - Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49845725/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com