在Swift中加载CoreData

时间:2016-02-15 19:15:38

标签: swift core-data

我尝试将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',我会得到以下结果:

  1. 测试
  2. 测试1
  3. 测试
  4. 测试1
  5. 测试
  6. 测试1
  7. 测试
  8. 测试1
  9. 测试
  10. 10.Test1

    感谢任何建议!

2 个答案:

答案 0 :(得分:2)

加载tableView(以及之后)时,可以多次调用numberOfRowsInSection方法。每次调用它时,都会将值附加到数组中 - 因此重复值。

将构建数组的代码改为viewDidLoad

答案 1 :(得分:1)

你工作太辛苦了。 NSFetchedResultsController正好适用于将核心数据放入tableview的任务。