There, problem solved.
I would solve the problem in Obj-C by introducing a directive on the file-level for the newer syntax, like how they did it in F# with the "#light" directive. And when a file is compiled with that directive, the compiler could trigger compile-time errors for those obviously dangerous constructs.
x = Post.first ? do_foo(x) : do_bar # does the assignment, then evaluates the result
A nice shorthand in my opinion, so the python way isn't a cure-all :)
(x = Post.first) ? do_foo(x) : do_bar