2016-04-13 3 views
0

У меня проблемы с синтаксисом, которые я просто не могу понять. У меня нет сильного Swift фоновую, так что ответ мой быть легко (я надеюсь). Итак, вот фрагмент кода:Swift Core Data Variable Issue

public func getLatestDate()-> NSDate? { 

    var request = NSFetchRequest() 
    var entity = NSEntityDescription.entityForName("Event", inManagedObjectContext: self.managedObjectContext) 

    request.entity = entity 

    let sortDescriptor = NSSortDescriptor(key: "timeStamp", ascending: false) 
    let sortDescriptors = [sortDescriptor] 

    request.sortDescriptors = sortDescriptors 

    var error: NSError? = nil 

    do { 
     let results = try self.managedObjectContext.executeFetchRequest(request) 
    } catch { 
     fatalError("Failed to fetch employees: \(error)") 
    } 

    var date: NSDate? 
    if results != nil { 
     let managedObject: NSManagedObject = results![0] as NSManagedObject 
     date = managedObject.valueForKey("timeStamp") as? NSDate 
    } 

    return date 
} 

Проблема заключается в том, что if results != nil и results на следующей строке выбрасывания ошибка с указанием:

использование 'результаты' неразрешенного идентификатора

Как решить эту проблему?

спасибо.

Матф

ответ

1

Вы объявляя results здесь:

do { 
    let results = try self.managedObjectContext.executeFetchRequest(request) 
} catch { 
    fatalError("Failed to fetch employees: \(error)") 
} 

Таким образом, вы можете видеть, что это делается в рамках do-catch блока. Это означает, что там, где вы пытаетесь использовать его, выходит за рамки, где он был определен, поэтому он вообще не видит его. К тому времени, когда вы доберетесь до if results != nil, он уже вышел из сферы действия и ушел.

0

в дополнение к Гавин: это будет работать причину причины, Тар Gavin упомянул

Смежные вопросы