2010-11-23 14 views
2

私はので、私は、これは私のためにOKに見えますが、私は、私はNSArrayのは、NSDictionaryのでいっぱいに取得すると思います。このNSArrayのデータをNSDictionaryで抽出する方法は?

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
[fetchRequest setEntity:[NSEntityDescription entityForName:@"my_table" inManagedObjectContext:managedObjectContext]]; 

[fetchRequest setResultType:NSDictionaryResultType]; 
[fetchRequest setReturnsDistinctResults:YES]; 
[fetchRequest setPropertiesToFetch:[NSArray arrayWithObjects:@"first_property",@"second_property",nil]]; 

// Execute the fetch 
NSError *error; 
table_dom = [[NSArray alloc] init]; 
table_dom = [managedObjectContext executeFetchRequest:fetchRequest error:&error]; 
[fetchRequest release]; 

ように私のNSFetchrequestを設定 、コアデータと「SQL明確な」要求のようなものを作ってみますそれは厳しいですか?

私の質問はどのようにテーブルビューのtable_domからデータを抽出できますか?多くのことを試してみましたが、誰もうまくいきませんでしたか?

それがなければならない: cell.textLabel.text = // "最初のプロパティ" と cell.detailTextLabel.text = // "second_property"

それとも、それを簡単にするために、私は、オブジェクトを取得することができますNSDictionaryではなくsetReturnsDistinctResults?

おかげで

答えて

1

あなたはNSDictionaryでいっぱいNSArray取得することが正しいです。まず、コードにメモリリークがあることを指摘したいと思います。 executeFetchRequest:error:NSArrayを返すため、table_dom = [[NSArray alloc] init];は不要です。その行を削除してください。

あなたの配列を取得したら、あなたはこのような何かを行うことができます。

NSDictionary *dict = [table_dom objectAtIndex:indexPath.row]; 
cell.textLabel.text = [dict objectForKey:@"first_property"]; 
cell.detailTextLabel.text = [dict objectForKey:@"second_property"]; 
+0

ありがとうございます。でも、cellviewRowAtIndexPathメソッド内でテーブルビューをスクロールしていたときにクラッシュしていたため、100%で動作するようにself.table_domを追加します。 – krifur

+0

はい、これはおそらく最も簡単な方法です。それ以外の場合は、[table_dom retain]も行うことができます。 –

2

[fetchRequest setResultType:NSDictionaryResultType]; 

[fetchRequest setPropertiesToFetch:[NSArray arrayWithObjects:@"first_property",@"second_property",nil]]; 
を削除この ためので、あなたがオブジェクトの形でアクセスすることができないのはなぜ

今すぐ

あなたはこの配列に エキスオブジェクトを使用して簡単に使用することにより、プロパティfirst_propertyとsecond_property の両方にアクセスするので、あなたのエンティティのオブジェクトを持つ
table_dom = [managedObjectContext executeFetchRequest:fetchRequest error:&error]; 

table_dom。オペレーター。

+0

setReturnsDistinctResultsに加えてsetPropertiesToFetchメソッドが機能するため、このメソッドを削除することはできません。 apple docをチェックします - > YESの場合、要求はpropertiesToFetchで指定されたフィールドの個別の値のみを返します。 – krifur

+0

私はこれを使用して正常に動作します。あなたはそれを試すことができます。 – Ishu

関連する問題