CoreData: Is it possible to have SQLite CASE WHEN...END logic in NSSortDescriptor?

Currently, I am porting several SQLite statement to CoreData.

"SELECT id, \"order\" FROM plain_note WHERE archived = :archived AND trashed = :trashed " +
    "ORDER BY " +
        "CASE WHEN color_index = -1 THEN 12 + ABS(custom_color) ELSE " +
        "color_index END DESC, " +
        "\"order\" ASC"
"SELECT id, \"order\" FROM plain_note WHERE archived = :archived AND trashed = :trashed " +
    "ORDER BY " +
        "title COLLATE NOCASE DESC, " +
        "CASE WHEN locked = 1 THEN NULL ELSE " +
            "CASE WHEN type = 0 THEN body ELSE searched_string END " +
        "END COLLATE NOCASE DESC, " +
        "\"order\" ASC"

But, I am clueless on how I can make CoreData have the following CASE WHEN...END behavior, during sorting.

CASE WHEN color_index = -1 THEN 12 + ABS(custom_color) ELSE color_index END DESC
CASE WHEN locked = 1 THEN NULL ELSE
    CASE WHEN type = 0 THEN body ELSE searched_string END
END COLLATE NOCASE DESC

I was wondering, is there any possible technique I can use, so that NSSortDescriptor can have the similar behavior?

CoreData: Is it possible to have SQLite CASE WHEN...END logic in NSSortDescriptor?
 
 
Q