繁体   English   中英

无法从二维数组返回元素

[英]Can't return elements from two-dimensional array

我正在尝试制作一个保存标题和网站链接的功能

这就是我试图存储的

[0] -> [TITLE, LINK]
[1] -> [TITLE, LINK]
[2] -> [TITLE, LINK]

这就是我的做法

//Create array
var favoriteProducts = [[String:String]]()
                            
//Add products
let firstArray = [titleName:String(), link:String()]

favoriteProducts.append(firstArray)
                            
//Add to defaults
UserDefaults.standard.set(favoriteProducts, forKey: "favProducts")

下一步是使用ForEach循环返回标题和链接。 为了调试我正在尝试使用

UserDefaults.standard.array(forKey: "favProducts")![0][0]

哪个返回

Value of type 'Any' has no subscripts

然而

UserDefaults.standard.array(forKey: "favProducts")![0]

退货

(website, link)

所以我的问题是如何单独返回网站和链接,而不仅仅是整个下标?

您可以将 arrayOfStrings 存储在 struct array 中,并且可以从 struct 访问 vale,例如

    var favouriteProducts = [[String:Any]]()
    var listOfSite = [SiteDetail]()
    
    var firstArray = ["titleName":"String","link":"firstlink"]
    var secondArray = ["titleName":"s","link":"s"]
    
    favouriteProducts.append(firstArray)
    favouriteProducts.append(secondArray)
    UserDefaults.standard.set(favouriteProducts, forKey: "favProducts")
    
    let value = UserDefaults.standard.array(forKey: "favProducts") as? [[String:String]] ?? [[:]]
    
    for values in value{
        let siteName = values["titleName"] as? String ?? ""
        let link = values["link"] as? String ?? ""
        let siteDetail = SiteDetail(website: siteName, link: link)
        listOfSite.append(siteDetail)
    }
    
    print("listOf \(listOfSite[0].link)")
    print("listOf \(listOfSite[0].website)")

 //////////////////////////

  struct SiteDetail{
    var website:String?
    var link:String?
  }

这里UserDefaults.standard.array返回一个Any类型的数组,并且您正在存储一个字典数组。 所以在检索时,需要将数组元素转换为字典。

此外,您可以使用键来获取字典值。

let firstElement = (UserDefaults.standard.array(forKey: "favProducts")?[0] as? [String: String])
let title = firstElement?["titleName"]
let link = firstElement?["link"]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM