Swift:如何在 plist 中获取第一个数组字符串?

Posted

技术标签:

【中文标题】Swift:如何在 plist 中获取第一个数组字符串?【英文标题】:Swift: How to get first string of array in plist? 【发布时间】:2017-11-17 03:29:20 【问题描述】:

我有一个 plist,它是一个包含数百个数组的数组,每个数组包含 22 个字符串。如何获取 plist 中每个数组的第一个字符串?

我正在使用集合,在cellForItemAt 中,我试图让数组的第一个字符串显示在标签中的每个单元格下方。

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell 

    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! Collections

    // Set Image
    cell.imageCell.image = UIImage(named: "image_\(indexPath.row)")

    // Check NameLabel Switch Status
    if savedSwitchStatus == true 

        cell.labelCell.isHidden = false
        cell.labelCell.text = (??) // <--------------

     else 
        cell.labelCell.isHidden = true
    

    return cell

我有 2 种类型的 plist:

第一个 plist 有 1 个包含多个字符串的数组。每个字符串都是位于单元格下方的名称。

第二个 plist 是一个数组数组,每个数组包含 22 个字符串。在这里,我只需要从每个数组中获取第一个字符串以显示在单元格下。

【问题讨论】:

只需要从plist文件中获取数据并为所欲为***.com/questions/1343121/plist-array-to-nsdictionary 【参考方案1】:

您需要将您的 plist 解析为字符串数组,即 [[String]]。

func arrayFromPlist(plist:String) -> [[String]]? 
    guard let fileUrl = Bundle.main.url(forResource: plist, withExtension: "plist"), let data = try? Data(contentsOf: fileUrl) else 
        return nil
    

    return try? PropertyListSerialization.propertyList(from: data, options: [], format: nil) as? [[String]]

使用上述函数获取数组并将数组作为tableview的数据源。

var datasourceArray:[[String]] 
    didSet 
        self.tableView.reloadData()
    

在你的 cellForRow 中:

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell 

    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! Collections

    // Set Image
    cell.imageCell.image = UIImage(named: "image_\(indexPath.row)")
    let strings = datasourceArray[indexPath.row]!
    // Check NameLabel Switch Status
    if savedSwitchStatus == true 

        cell.labelCell.isHidden = false
        cell.labelCell.text = strings.first

     else 
        cell.labelCell.isHidden = true
    

    return cell

【讨论】:

【参考方案2】:

我只是在 plist 的数组上使用了indexPath.row 并匹配了它。

【讨论】:

以上是关于Swift:如何在 plist 中获取第一个数组字符串?的主要内容,如果未能解决你的问题,请参考以下文章

Swift 3 - 从 plist 的所有数组中获取所有项目

Swift:如何在 plist 的数组中读取多个数组?

如何在 swift 中读取数组和字典的 plist

如何使用 Swift 将新数组数据添加到 plist 文件中的 NSDictionary

如何从服务器端 JavaScript 获取值并将它们存储在 Swift 的 plist 中?

Swift 3 - 通过数组索引访问项目键值