2016-04-13 8 views
0

私は理解できない構文の問題があります。スウィフトコアデータ変数の問題

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が投げているということである。ここでスニペットがあり、私は戻って強いスウィフトグラウンドを持っていないので、答えは簡単では私の(私は願っています。)ので、エラーを知らせる:

を未解決識別子 '結果'

の使用がどのように私はこの問題を解決するのですか?

ありがとうございます。

-Matt

答えて

1

あなたはここにresultsを宣言している:

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

をだから、あなたはそれがdo-catchブロック内で行われていていることがわかります。つまり、使用しようとする場所が定義されている範囲外であるため、まったく見えません。 if results != nilになる頃には、既に範囲外になってしまっています。ギャビンに加えて

0

:これが理由の原因に動作します、タールギャビンは

を述べました