2013年10月25日金曜日

Winter '14でのListView直接表示(Force.com)

たまにはForce.comネタを。 

タイトルの件ですが、Webタブに直接ViewのURLを指定して、
 オブジェクトのランディングページをすっ飛ばしたい!
という要望を客先から聞いた時に isdtp=vwなどのURLパラメータを設定して
実現していた方は多いかと思います。


Winter'14から、上記方法では実現できなくなっていました。
デバッグしてみると、どうやらシームレスなリンクをするためのsrcUpメソッドが
iframe内で使えなくなっていることが直接の原因のようです。
(クリックインジェクション対策のせいかな?)

なので試行錯誤した結果、

VFページで

<apex:page action="{!URLFOR('ViewのURL')}" />

の内容でページを作成し、
VFタブを作成して設定すれば実現できました。

実はこれ、AppExchangeで配布されていたパッケージで実装されていたやり方なんですが、
目から鱗でしたね。

ええ。
その前日私はsrcUpを全てhrefリンクに変更するjavascriptを書きましたから

上記方法でも一応は動きます。
が、面倒だしレンダリング仕様変更されたら一発アウトなのでやらない方がいいです。

というわけでちょこっとしたTipsでした。ではでは。

2013年10月19日土曜日

Xcode5からの新機能「Images.xcassets」の使い方について

Xcode5から画像リソースが管理しやすくなる機能「.xcassets」が追加されました。今回はこの機能の使い方について書きます。


2013年10月17日木曜日

Rubyの文字列リテラルのUnicodeエスケープがうまくいかない時

Ruby 2.0 にて確認した内容です。

Rubyの文字列リテラルはバックスラッシュ記法を用いてUnicode文字をコードポイントから表示することが出来ます。
(\uXXXXの形式)

>> puts "\u3042"
>> あ


しかし、コードポイントが5桁の場合、この書き方だとうまくエスケープされません。
(前半4桁と最後の1桁の2文字扱いになる)

>> puts "\u20e95"
>>  ⃩5


この場合、以下の様にコードポイント部分を{}で囲むと期待通りにエスケープされます。
(\u{XXXX}の形式)

>> puts "\u{20e95}"
>> 𠺕


また、この形式ならば、スペースで区切ることで複数コードを一度にエスケープできます

>> puts "\u{20e95 3042}"

2013年10月8日火曜日

Xcode5でQuickHelpを書く

Xcode5から実装したメソッドにQuickHelpを書く事が出来るようになったようです。ので、簡単に試してみました(公式ドキュメントほぼそのままですが...)。

メソッド

書き方は表示したいメソッドの上部へ記述に従って書くだけでOK。例えば以下のように。
/*! 社員の出社状況を設定
 * \param employeeNumber 社員番号
 * \param state 出社状況。YESなら出社で、NOならズル休み
 * \returns 出社状況がDBに保存されたかを返す
 */
- (BOOL)setEmployeeWork:(NSInteger)employeeNumber withState:(BOOL)state
{
    // 略
}
メソッドを呼び出している場所で、三点タップしてあげると以下のように表示される(これは公式メソッドのQuickHelp表示方法)。

メソッド上にカーソルが存在する際、Xcodeのプロパティに以下のように表示されもします。


クラス

メソッドと同じようにクラスに対してもQuick Help表示できます。例えば以下のように。
/*! ViewController
 * 存在価値のないクラス
 */
@interface ViewController : UIViewController
ViewControllerを三点タップすると以下のように表示されます。

ちなみにQuick Helpを追加しなかった場合、以下のように継承元クラスのQuick Helpが表示されます。