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

Swift: How to get first string of array in plist?

我有一个 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
}

我有两种 plists:

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

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

您需要将 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
}

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