2017-03-05 38 views
0

我有一個EventDec實體,它具有eventStatus屬性,我只想顯示該屬性的結果。這裏是我的代碼二元運算符不能應用於NSpredicate和int

let fetchRequestDec = NSFetchRequest<NSFetchRequestResult>(entityName: "EventDec") 
    fetchRequestDec.predicate = NSPredicate(format:"eventStatus = %i") 
    let result = fetchRequestDec.predicate 
if (result == 1) 
    { 
     print("Status = 1") 
    } 
    else 
    { 
     print("Status = 2") 
    } 

所以我正在過濾錯誤,因爲我得到這個錯誤。我該如何解決這個問題?

二元運算符「==」不能應用於NSpredicate和int

+1

這不是過濾,它是結果== 1行。結果是一個NSPredicate,1是一個int,因此不能使用二元運算符'=='。 – dylanthelion

+0

好的,那麼如何解決 – Coder221

+0

要麼給結果分配一個int值(讓結果= 4,或其他),要麼將它與另一個NSPredicate(如果結果== NSPredicate(格式:「eventStatus = 6」))進行比較。我無法確切地告訴你該做什麼,沒有關於此代碼段應該做什麼的更多信息。你究竟在檢查什麼? – dylanthelion

回答

1

你爲什麼要使用一個謂詞?你的問題似乎想要返回EventDec對象並打印eventStatus屬性。您需要執行提取。獲取結果數組。提取你想要的。不需要過濾。

let fetchRequest: NSFetchRequest<EventDec> = EventDec.fetchRequest() 
if let results = try? context.fetch(fetchRequest) { 
    for result in results { 
    print("Status = \(result.eventStatus)") 
    } 
} 

這假定您的managedObjectContext被稱爲上下文。 此外,你有一個錯字eventStaus而不是eventStatus

+0

感謝您指出錯字。但是這並不起作用 – Coder221

+0

剛剛意識到我自己的代碼中的仍然在fetchRequest中。如果你把它改成'let fetchRequest:NSFetchRequest = EventDec.fetchRequest()'有幫助嗎? – Magnas

+0

我試過,它只是打印出狀態= /(result.eventStatus) – Coder221

1

好吧,很高興我在操場檢查這一點,因爲蘋果公司進行了大量的子變化與雨燕3.0。試試這個,打印您的謂詞的int值(你也可以訪問該值,通過改變代碼位):

let index = fetchRequestDec.predicate.predicateFormat.index(fetchRequestDec.predicate.predicateFormat.endIndex, offsetBy: -1) 
print("Status: \(Int(String(fetchRequestDec.predicate.predicateFormat[index]))!)") 
+0

類型'NSFetchRequest '的值沒有成員謂詞格式 – Coder221

+0

哦,是的,對不起,該屬性是NSPredicate。我現在就更新我的答案。 – dylanthelion

+0

fetchRequestDec應該是什麼?因爲我沒有看到你涉及eventStatus屬性。所以我得到零(致命錯誤) – Coder221

相關問題