我似乎无法做到这一点。我想从我的数据库中获取核心数据并在表格视图中显示所有数据。运行此选项仅在我的表上多次显示最后一个ID。有人可以告诉我我做错了什么和/或可能有帮助吗?感谢。
import Foundation
import CoreData
extension MyFavourites {
@NSManaged var id: String?
}
-
var myFavs : [MyFavourites]?
override func viewDidLoad() {
super.viewDidLoad()
let appDel: AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let context: NSManagedObjectContext = appDel.managedObjectContext
let freq = NSFetchRequest(entityName: "MyFavourites")
freq.returnsObjectsAsFaults = false
do {
myFavs = try context.executeFetchRequest(freq) as? [MyFavourites]
} catch _ {
myFavs = nil
}
tableView.reloadData()
}
-
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return (myFavs?.count)!
}
-
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath)
if myFavs!.count > 0 {
for result: AnyObject in myFavs! {
if let favID: String = result.valueForKey("id") as? String {
cell.textLabel?.text = favID
}
}
} else {
print("No Record")
}
return cell
}
答案 0 :(得分:0)
如果我正确读取您的代码,它将在所有单元格中显示最后记录的favId。 cellForRowAtIndexPath
会询问您当前单元格的值,但不是提供它,而是循环遍历所有单元格并重复分配相同的标签,并使用favID多次重写它。在循环结束时,标签将具有列表中的最后一个ID。
您需要移除循环,并为cell.label.text
分配myFavs[indexPath.row]
的ID值。