繁体   English   中英

Swift 2中的提取请求,核心数据和错误处理

[英]Fetch Requests, Core Data and Error Handling in Swift 2

我全神贯注于Swift 2中错误处理的变化(之前要简单得多。感谢Apple),并在我在应用程序中使用的代码块中从Core Data加载某些内容时,我收到一个奇怪的错误。

我相信我正在正确处理错误,但是我很傻,因为在

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块)。

如果获取成功,将所有要执行的代码也放入do块中,并且因为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")
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM