2012-05-12 11 views
1

私は1つの事についていくつかのヒントを持っています:テーブルビューにバインドされた配列に "nil"値を挿入するにはどうすればよいですか?

テーブルビューの列にバインドされた配列では、数値(浮動小数点数)の値があります。これらの値は、「0」、「1」、「2」などのラベルが付いたインターフェイスボタンを使用して入力(アレイに入力)されます。入力を取り消す「C」ボタンもあります。

後で、私はこの配列といくつかの計算をしています。結果が入力されなかった場合、配列のオブジェクトは0になりません。 "値なし"は確かに "nil"でよりよく表現されますが、nilオブジェクトを配列に挿入することはできません(nilは配列の終わりを意味します)。

NSArrayにはオブジェクトが含まれています。つまり、これらのオブジェクトはNSNumbersでなければなりません。だから私はそれを[NSNumber numberWithDouble:...]で埋めて配列を初期化することができます何を?私はここに何も置くことができない!

真のNSArrayには「穴」は含まれません(できません)。しかし、私の場合、例えば、3番目のアイテムが決して値を受け取らなければならない。どのようにすることができます:

私のNSNumberの "未定義"の値を実装しますか? "C"ボタンを押すと以前に入力した結果が消去されますか?

解決策が必要です。 ApplescriptObjCで、私はトリックを使用:私はそう、そのタイトルを使用して、すべてのボタンから呼び出されるメソッドで帰属をした:

if sender's title as string is "C" then 
set item theRow of gResult to missing value -- the row was the selected line, gResult was a AS list. 
else 
set item theRow of gResult to sender's title as real 
end if 

を私はここに何をすべき? - 定義されていない値を示すために特別な値(たとえば-1)を選択し、次にNSPredicateを使用して配列をフィルタリングしますか? - セルに何か特別な値があり、セルに表示される(偶数)ので、セルを「何もない」にすることはできますか?

この問題に対する優雅な解決策があると確信しています。しかし、今のところ、私はちょうどあなたがNULL値を表すためにnsnullをオブジェクトを追加することができます...私は...助けを

感謝を残してきたなけなしの髪

+0

可読性を高めるためにコードを書いてください。これを行う方法については、http://stackoverflow.com/editing-helpを参照してください。 –

答えて

3

を引き裂きます。

+0

これを行うと、テーブルビューに ""というセルが表示されます。それは、最終的に期待されるものではありません。 – berfis

0

NSArrayには「識別」オブジェクトが必要です。その識別されたオブジェクトを見ると、あなたのコードは何か違うことをします。このような「識別」されたオブジェクトは、しばしば「センチネル」と呼ばれ、何でもよい。たとえば、次のコードで、その後

static NSNumber *theSentinel; 

/* initialize theSentinel somewhere with */ 
theSentinel = [NSNumber numberWithFloat: <anyfloat-doesnt'-matter-which>]; 

NSNumber *selection = [NSArray objectAtIndex: <user selection>]; 

if (selection == theSentinel) { /* something */ } 
else { /* main */ } 

そして、あなたの述語にあなたが(言葉ではなく、コード内で)使用することができます。

predicate = (obj NOT EQUAL theSentinel) AND (rest of your predicate based on float) 
+0

私は、述語を使うことが最良の解決策だと思います。私は計算を行うために "オフスクリーン"の配列を持つことができます。しかし、私は自分の述語のフォーマットに悩まされています。NSArray * myFilteredArray = [[NSArray array] filteredArrayUsingPredicate:nonNullPredicate]のようなものでなければなりませんが、 "property xy!= ''"という形式を定義する方法は? – berfis

+0

NSPredicateのドキュメントを参考にしてください。 (述語ではない)と演算子 '!='の両方が提供されます。お申し込み方法は、お使いの設定の詳細によって異なります。 – GoZoner

2

アンNSArrayのは、常にオブジェクトが含まれていなければなりません、nilは配列の終わりを示すフラグです。したがって、オブジェクトとしてゼロ値を表現するには、次のようにNSNullを使用する必要があります。

[NSNull null] 
+0

これを行うと、テーブルビューに ""と表示されます。悪い。 – berfis

+0

さて、あなたはヌルをチェックして、それを表示しません。どのように細胞を制御していますか?これは全くカスタマイズされていないと聞こえません。 – Daniel

+0

いいえ、単純なテキストセルで、arrayControllerにバインドされています。注:これらのセルの基本的な動作はOKです。編集可能な値が表示され、「値なし」を示す空の文字列に設定されます。私の問題はこれらの細胞で計算することです。 NSString配列をNSNumber配列に変換し、空白値からフィルタリングした「オフスクリーン」配列ですか? – berfis

関連する問題