我尝试将CoreData中的所有数据加载到我的TableView中。但为什么我要加载每个数据值5次?
var value: [String] = []
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
let appDel: AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let context: NSManagedObjectContext = appDel.managedObjectContext
let request = NSFetchRequest(entityName: "Contacts")
request.returnsObjectsAsFaults = false
do {
let result: [AnyObject] = try context.executeFetchRequest(request)
for res in result {
value.append(res.valueForKey("name") as! String)
}
} catch {
fatalError("Failure to load context: \(error)")
}
return value.count
}
修改
如果我添加对象'Test'和'Test1',我会得到以下结果:
10.Test1
感谢任何建议!
答案 0 :(得分:2)
加载tableView(以及之后)时,可以多次调用numberOfRowsInSection
方法。每次调用它时,都会将值附加到数组中 - 因此重复值。
将构建数组的代码改为viewDidLoad
。
答案 1 :(得分:1)
你工作太辛苦了。 NSFetchedResultsController
正好适用于将核心数据放入tableview的任务。