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
并匹配它。
我有一个 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
并匹配它。