絵文字が (ios からバックエンド サーバーへ、そして ios に戻る) ラウンド トリップを行わない場合、問題はないはずです。ios (少なくとも 4.2+) はエンコーディングを正しく処理するため、その必要はありません。なんでも。しかし、アプリがサーバーとやり取りする場合、サーバーの戻り値が間違っているのではないかと疑っていますか? つまり、json のエンコードが間違っています。
何時間も掘り下げた後、私は同じ問題を抱えていましたが、最終的に私に合ったこの答えを見つけました: https://stackoverflow.com/a/8339255/1090945
Rails をサーバーとして使用している場合は、これだけで十分です。ios/xcode で何もする必要はありません。UTF8/16 エンコーディングをサーバーに行わずに NSString を渡すだけです。
Postegre はコードを正しく保存します。これは、json:@message をレンダリングすると仮定して、json 応答を ios クライアントに送り返すときだけです。json エンコーディングに問題があります。
コンソールで簡単なテストを行うことで、Rails コンソールで json エンコーディングの問題が発生しているかどうかをテストできます。
test = {"smiley"=>"u{1f604}"}
test.to_json
"{\"smiley\":\"\uf604\"}" (1 が失われていることに注意してください) と出力される場合は、この問題が発生しています。リンクからのパッチで修正されます。