2014-10-10 67 views
0

我花了很多時間試圖弄清楚這一點,並沒有得到任何地方。從coredata填充一個按鈕

我有一個NSDate屬性的實體,它成功保存。

我該如何從商店(僅年份部分)中獲取NSDate並使其填充按鈕上的文本。 ,這樣按鈕可以稍後按下並轉到另一個視圖控制器/表視圖控制器。

我花了幾個小時試圖弄清楚,我完全卡住找不到任何例子。

有沒有人有時間來幫助這個請。 使用斯威夫特 (希望我已經正確格式化了這個問題,這裏小白位) 謝謝你看

//year button 
@IBAction func btnYear(sender: AnyObject) { 

    //APP DEL REFERANCE 
    var appdel: AppDelegate = (UIApplication.sharedApplication().delegate as AppDelegate) 
    var context: NSManagedObjectContext = appdel.managedObjectContext! 
    let ent = NSEntityDescription.entityForName("FilmInfo", inManagedObjectContext: context)! 

    // fetch request 
    var request = NSFetchRequest(entityName: "FilmInfo") 
    request.returnsObjectsAsFaults = false 

回答

0

首先,從你的數據的日期。

object.date 

然後,格式化它,以便您可以將其顯示在按鈕上。

var formatter = NSDateFormatter() 
formatter.dateStyle= .ShortStyle 
let buttonTitle = formatter.stringFromDate(object.date) 

最後標題分配到按鈕

button.setTitle(buttonTitle, forState: .Normal) 

要得到擺在首位的對象,獲取它。別忘了執行您的提取請求。

var request = NSFetchRequest(entityName: "FilmInfo") 
request.predicate = NSPredicate(format:"id = %@", aFilmInfoID) // example 
request.fetchLimit = 1 
let results = context.executeFetchRequest(request, error:nil)! as [FilmInfo] 
let object = results.first! 
+0

謝謝您的回答,但其不夠虛弱。 – user3799446 2014-10-10 13:57:03

+0

沒有別的可說的。我無法想象讓它變成什麼笨蛋。這是你的問題的完美答案,所以你應該接受它,或者至少投票直到你把你的東西放在一起。 - 需要注意的一點是,它比執行獲取請求要簡單得多。但簡單不一樣愚蠢。 – Mundi 2014-10-11 14:19:07

+0

我以您的對象爲例添加了一個簡單的獲取請求。希望能幫助到你。 – Mundi 2014-10-11 14:24:37

0

您需要在您的上下文中執行您的獲取請求。

var resultsArray = context.executeFetchRequest(request,nil) 
if let arr = resultsArray { 
    //we have some results 
    var firstObject: FilmInfo = arr[0] as FilmInfo 
    var date = firstObject.date 
} 

如果你有興趣,你可以隨時設置request.fetchLimit = 1

獲得更高級的,你也可以只讀取日期屬性只有一個對象:

fetch.propertiesToFetch = ["date"] 
fetch.resultType = .DictionaryResultType