我有一个对象数组,我正在尝试将数组的正确索引分配给某个单元格,如下所示。
我的阵列:
let nflTeamData: [String] = ["New England Patriots", "Miami Dolphins", "New York Jets", "Buffalo Bills", "Baltimore Ravens", "Cincinnati Bengals", "Pittsburgh Steelers", "Cleveland Browns", "Tampa Bay Buccaneers", "New Orleans Saints", "Carolina Panthers", "Atlanta Falcons", "San Francisco 49ers", "Seattle Seahawks", "Arizona Cardinals", "Los Angeles Rams"]
下面是将虚拟数据添加到CoreData的位置。我打印下面的teamName
但不幸的是只得到我的数组中的最后一项(洛杉矶公羊队)来填充CollectionView中的每一行。我知道我需要以某种方式合并数组的索引路径,但不确定在collectionview委托方法之外访问它的正确方法。
//MARK: CoreData
func addDummyData() {
let moc = DataManager.sharedInstance.persistentContainer.viewContext
for div in nflDivision {
let division = NSEntityDescription.insertNewObject(forEntityName: "Division", into: moc) as! Division
print(div)
division.name = div
addTeams(division: division)
}
DataManager.sharedInstance.saveContext()
}
func addTeams(division: Division) {
let moc = DataManager.sharedInstance.persistentContainer.viewContext
var i = 1
while i < 5 {
let team = NSEntityDescription.insertNewObject(forEntityName: "Team", into: moc) as! Team
for (index, teamName) in nflTeamData.enumerated() {
print(index, teamName)
team.name = "\(teamName) - \(i)"
}
team.id = Int64(i)
i += 1
division.addToTeams(team)
}
}
//MARK: CollectionView
override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: cellId, for: indexPath) as! StandingsCell
let division = divisions[indexPath.section]
let team = division.teams?[indexPath.row] as! Team
cell.teamLabel.text = team.name
cell.teamLogo.image = #imageLiteral(resourceName: "nfl58")
cell.winTextField.delegate = self
cell.lossTextField.delegate = self
cell.winTextField.tag = 0 //Increment accordingly
return cell
}
override func numberOfSections(in collectionView: UICollectionView) -> Int {
return divisions.count
}
override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
let division = divisions[section]
return division.teams?.count ?? 0
}
当前输出:
预期产出:
只有一个团队从上面提到的nflTeamData
数组中填充一行。
let nflDictionary: [String: String] = ["New England Patriots" : "1",
"Miami Dolphins" : "2",
"New York Jets": "3",
"Buffalo Bills": "4",
"Baltimore Ravens": "1",
"Cincinnati Bengals": "2",
"Pittsburgh Steelers": "3",
"Cleveland Browns": "4",
"Houston Texans": "1",
"Jacksonville Jaguars" : "2",
"Indianapolis Colts": "3",
"Tennessee Titans": "4",
"Kansas City Cheifs" : "1",
"Denver Broncos": "2",
"Oakland Raiders": "3",
"Los Angeles Chargers": "4",
"New York Giants": "1",
"Philadelphia Eagles": "2",
"Washington Redskins": "3",
"Dallas Cowboys": "4",
"Minnesota Vikings": "1",
"Green Bay Packers": "2",
"Detriot Lions": "3",
"Chicago Bears": "4",
"Tampa Bay Buccaneers": "1",
"New Orleans Saints": "2",
"Carolina Panthers": "3",
"Atlanta Falcons": "4",
"San Francisco 49ers": "1",
"Seattle Seahawks": "2",
"Arizona Cardinals": "3",
"Los Angeles Rams": "4"
]
答案 0 :(得分:0)
您似乎需要修改此方法。删除while语句并尝试更新相同的值: -
func addTeams(division: Division) {
let moc = DataManager.sharedInstance.persistentContainer.viewContext
for (index, teamName) in nflTeamData.enumerated() {
let team = NSEntityDescription.insertNewObject(forEntityName: "Team", into: moc) as! Team
print(index, teamName)
team.name = "\(teamName) - \(index)"
team.id = Int64(index)
division.addToTeams(team)
}
}
答案 1 :(得分:0)
请检查:
^M
输出:
func addDummyData() {
let moc = DataManager.sharedInstance.persistentContainer.viewContext
var divisionLevel = 1
for div in nflDivision {
let division = NSEntityDescription.insertNewObject(forEntityName: "Division", into: moc) as! Division
print(div)
division.name = div
addTeams(division: division, divisionLevel: divisionLevel)
divisionLevel = divisionLevel + 4
}
DataManager.sharedInstance.saveContext()
}
func addTeams(division: Division, divisionLevel: Int) {
let moc = DataManager.sharedInstance.persistentContainer.viewContext
var i = 1
for var index in divisionLevel..<divisionLevel+4 {
if nflTeamData.count >= index {
let team = NSEntityDescription.insertNewObject(forEntityName: "Team", into: moc) as! Team
team.name = "\(nflTeamData[index-1]) - \(i)"
print("\(team.name)")
team.id = Int64(i)
division.addToTeams(team)
i = i + 1
}
}
}