CoreData:如何将获取的数据显示到 UIcollectionView Cell
CoreData: How to display fetched data to UIcollectionView Cell
目前我有这个 loadCharacters 函数
var characterArray = [Character]()
func loadCharacters(with request: NSFetchRequest<Character> = Character.fetchRequest()) {
do {
characterArray = try context.fetch(request)
} catch {
print("error loading data")
}
collectionView.reloadData()
}
我的问题是:如何将获取的数据从那里传递到我的子类 CharacterCollectionViewCell 并稍后将此单元格用于我的
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath)
-> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "characterCell",
for: indexPath) as! CharacterCollectionViewCell {
...
}
非常感谢任何建议或更好的方法来使其发挥作用!!
只需要获取indexPath.item
对应的characterArray
元素,用它传入单元格即可。
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath)
-> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "characterCell",
for: indexPath) as! CharacterCollectionViewCell {
cell.someLabel.text = characterArray[indexPath.item]
//...
return cell
}
如果要传递的数据太多,最好创建一个模型并使用它的实例将数据传递到单元格。因此,为此首先创建一个模型。
struct CharacterCellModel { // all properties... }
然后在你的UIViewController
分class.
var characterCellModels = [CharacterCellModel]() // append this model
最后在 cellForItemAt
:
cell.characterCellModel = characterCellModels[indexPath.item]
目前我有这个 loadCharacters 函数
var characterArray = [Character]()
func loadCharacters(with request: NSFetchRequest<Character> = Character.fetchRequest()) {
do {
characterArray = try context.fetch(request)
} catch {
print("error loading data")
}
collectionView.reloadData()
}
我的问题是:如何将获取的数据从那里传递到我的子类 CharacterCollectionViewCell 并稍后将此单元格用于我的
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath)
-> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "characterCell",
for: indexPath) as! CharacterCollectionViewCell {
...
}
非常感谢任何建议或更好的方法来使其发挥作用!!
只需要获取indexPath.item
对应的characterArray
元素,用它传入单元格即可。
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath)
-> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "characterCell",
for: indexPath) as! CharacterCollectionViewCell {
cell.someLabel.text = characterArray[indexPath.item]
//...
return cell
}
如果要传递的数据太多,最好创建一个模型并使用它的实例将数据传递到单元格。因此,为此首先创建一个模型。
struct CharacterCellModel { // all properties... }
然后在你的UIViewController
分class.
var characterCellModels = [CharacterCellModel]() // append this model
最后在 cellForItemAt
:
cell.characterCellModel = characterCellModels[indexPath.item]