2016-05-10 11 views
0

Core Data(保存日の配列)のDate属性のNSDatesの配列を作成しようとしています。だから私はアイテムが保存されている日があるカレンダーに表示することができます。私は以下のコードで試してみましたが、エラーを取得していますSwift ManagedObjectContextから日付の配列を取得するFetchRequest

がキャッチされない例外により「NSInvalidArgumentException」にアプリを終了、理由:「形式の文字列を解析することができません 『savedTime』

func datesWithSavedData() -> [NSDate] { 
    let fetchRequest = NSFetchRequest(entityName: "UserData") 
    fetchRequest.predicate = NSPredicate(format: "savedTime'") 
    fetchRequest.sortDescriptors = [NSSortDescriptor(key: "savedTime", ascending: false)] 
    do { 
    let results = 
     try managedObjectContext.executeFetchRequest(fetchRequest) as? [NSDate] 
    selectedDates = results! 
    print(selectedDates) 
    } catch let error as NSError { 
    print("Could not fetch \(error), \(error.userInfo)") 
    } 

    return selectedDates as! [NSDate] 
} 
+0

'NSPredicate(形式:" savedTime '")'は意味がありません。述語は結果セットのフィルタリング*用ですので、何を達成したいのですか?すべてのエントリーが必要な場合は、述部を省略します。 –

+0

私はそれを試して、 "致命的なエラー:予期せず、選択された値をアンラップしている間にnilが見つかりました"という行をselectedDates = results行に取得しました! – SashaZ

+0

日付と私はそれらをnsdateとして保存しました。 – SashaZ

答えて

2

ソリューションを伝えることですたとえば、[NSManagedObject]ではなく辞書配列を返すコアデータ。

func datesWithSavedData() -> [NSDate] { 
    let fetchRequest = NSFetchRequest(entityName: "UserData") 
    fetchRequest.sortDescriptors = [NSSortDescriptor(key: "savedTime", ascending: false)] 
    fetchRequest.resultType = .DictionaryResultType 
    fetchRequest.propertiesToFetch = ["savedTime"] 
    do { 
    let results = try managedObjectContext.executeFetchRequest(fetchRequest) as! [[String:NSDate]] 
    return results.map { $0["savedTime"] as! NSDate } 

    } catch let error as NSError { 
    print(error) 
    return [NSDate]() 
    } 
} 
+0

これは働き、nsdatesの完全な辞書を与えます!もう1つの解決策は、日付だけでなく、コアデータからエンティティ全体を出力します。 – SashaZ

関連する問題