[英]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.