0

私はダッシュコードを使用して、いくつかの Cocoa ツールのレポート データを表示するためのインターフェイスを書き始めました。Dashcode データ ソースとバインディングを使用して WebView の要素を設定していますが、これまでのところすべてうまく機能しているようです。

私の dataSource 内のオブジェクトの 1 つは、プログラムで操作したいオブジェクトの配列です。配列内のオブジェクト値は問題なく変更できますが、配列または配列内のオブジェクトを置き換えたい場合、バインドされたテーブルは追加されたオブジェクトを観察できません。

バインドされた配列を新しいコンテンツに簡単に置き換えることができると思われるコードを次に示します。

var dataSource = dashcode.getDataSource("reportData");
var newDetailArray = testArray();
dataSource.setValueForKeyPath(newDetailArray, "content.detailArray");

しかし、これは例外をスローします:

Exception while binding "content" to keypath "arrangedObjects " TypeError: Result of expression 'this.object.valueForKeyPath' [undefined] is not a function.

配列の内容をプログラムで簡単に操作できるようにするために欠けているものはありますか?

4

1 に答える 1

0

これが問題の解決策です:

1)最初にmain.jsでKVOオブジェクトを定義します。特定のdataSourceのデータはバインド可能である必要があるため、この手順は重要です。

anObj = Class.create(DC.KVO, {
    constructor: function(name) {
        this.name = name;
    }
});

2)「anObj」クラスに属するオブジェクトを含む配列を作成します。

function switchContent(event)
{   
    var myPerson = new anObj('Paul');
    var myArray = new Array();
    myArray.addObject(myPerson);

    // 'dataSource' has to be defined in Dashcode as usual
    var ds = dashcode.getDataSource('dataSource');

    // replace content of datasource ds with myArray
    ds.setContent(myArray);   
}

この情報がお役に立てば幸いです。

于 2011-02-13T15:21:12.207 に答える