ios - Swift 2 中的获取请求、核心数据和错误处理

标签 ios iphone core-data swift2 ios9

我正在思考 Swift 2 中错误处理的变化(以前更简单。感谢 Apple),并且在我在应用程序中使用的代码块中从我收到的核心数据中加载一些东西一个奇怪的错误。

我相信我正确地做了错误处理,但我傻眼了,因为在

if let results = fetchResults

我遇到错误:“使用未解析的标识符‘fetchResults’

我是否对导致此问题的新错误处理做错了什么?

    override func viewDidLoad() {
        super.viewDidLoad()

        /*---------    Load Data from Core Data  ----------*/
        var request = NSFetchRequest(entityName: "Peoples")
        var error : NSError?

//        let fetchResults = managedObjectContext.executeFetchRequest(request, error: error) as! [Peoples]

        do {
            let fetchResults = try managedObjectContext.executeFetchRequest(request) as? [Peoples]
        } catch var error as NSError{
            print("Fetch Failed")
        }

        if let results = fetchResults
        {
            peopleArray = results//Result

            let num = peopleArray.count
            for var i = 0; i < num; i++
            {
                strPhoneNum = peopleArray[i].valueForKey("phone") as! String
                strFullName = peopleArray[i].valueForKey("name") as! String
                phoneArray.addObject(strPhoneNum)//Add phone number in array
                nameArray.addObject(strFullName)//Add name in arrray
            }
        }
        /*---------------------------------------------------*/

        contactTable.reloadData()
    }

最佳答案

局部变量仅在它们声明的范围内可见,在 fetchResult 的情况下,do block 。

如果获取成功,则将所有要执行的代码也放在 do block 中,并且根本不需要任何可选绑定(bind),因为 peopleArray 是有效的。

我稍微简化了代码。

   do {
        let peopleArray = try managedObjectContext.executeFetchRequest(request) as! [Peoples]

        for person in peopleArray
        {
            strPhoneNum = person.valueForKey("phone") as! String
            strFullName = person.valueForKey("name") as! String
            phoneArray.addObject(strPhoneNum)//Add phone number in array
            nameArray.addObject(strFullName)//Add name in arrray
        }
       contactTable.reloadData()

    } catch var error as NSError{
        print("Fetch Failed")
    }

关于ios - Swift 2 中的获取请求、核心数据和错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33851744/

相关文章:

ios - 刷新 UITableView 中的分页数据

iOS HTTP Post 不会运行 url

ios - 无法取消选择 collectionView 中的项目

core-data - 应用在 executeFetchRequest 上崩溃

ios - 由于 PrivateQueueConcurrencyType 导致 CoreData 内存泄漏

iphone - showInView 导致剪裁

iphone - UILongPressGestureRecognizer 标签? - iPhone

iphone - 像垃圾桶动画这样的解决方案

未连接到计算机时的 iPhone 内存泄漏监控

ios - 我应该如何命名可导入的 .sqlite 持久存储?