2011-11-08 5 views
0

私はこの[[NSUserDefaults standardUserDefaults] objectForKey]は何を返しますか?

NSArray * myArray = [[NSArray alloc] init]; 
myArray = [[NSUserdefaults standardUserDefaults] objectForKey:@"array"]; 
[myArray release]; 

をやっている場合は、私が「アレイ」@キーのNSUserDefaultsに保存されている値を破壊するのですか?それはまだ抽出可能かどうか? [[NSUserdefaults standardUserDefaults] objectForKey:@ "array"];ポインタまたは値を返しますか?

答えて

5

objectForKeyを呼び出すと、オートレリースされた配列が返されます。

その周りにalloc/initやreleaseをしないでください。あなたは漏れていて、おそらくクラッシュするでしょう。

ちょうど行います

NSArray * myArray = [[NSUserDefaults standardUserDefaults] objectForKey: @"array"]; 
2

私は、 "アレイ" @キーのNSUserDefaultsに保存されている値を破壊するのですか?

NO

は、それはすでに、まだ抽出かいませんか?

抽出可能

がい[[NSUserdefaults standardUserDefaults] objectForKey:@ "配列"];ポインタまたは値を返しますか?

ポインタ。オブジェクトへのポインタを返します。


コードが正しくありません。

NSArray * myArray = [[[NSUserdefaults standardUserDefaults] objectForKey:@"array"] retain]; 
.... 
[myArray release]; 
2

あなたは値を取り除きたいと思うように私に聞こえます。あなたがやっているのは、[[[NSUserdefaults standardUserDefaults] objectForKey:@"array"]のデータで配列を作ることです。

あなたがデータを取得し、他の場所でそれを使用したい場合:ベリリウムが言っただけのよう

NSArray * myArray = [[[NSUserDefaults standardUserDefaults] objectForKey:@"array"] retain]; 
// do stuff here 
[myArray release]; 

[[NSUserDefaults standardUserDefaults] setObject:anObject forKey:@"array"]; 

を使用すると、データを取り除きたい場合は:もちろん、それを最初に設定する必要があります可能性があり

[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"array"]; 

私は正直にあなたがスキーをしているかわからないので、それは非常に困難ですあなたが探している答えをあなたに伝えてください。ちょっとクリアしていただけますか?

+0

を取得し、私がやってみたかったすべては、別の配列に設定し、未破壊nsuserdefaultsに格納された配列を残し、nsuserdefaultsからexctract配列です。それで全部です –

0

ストア配列

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; 
[userDefaults setObject:yourArray forKey:@"yourKey"]; 
[userDefaults synchronize]; 

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; 
NSArray *yourArr = [userDefaults objectForKey:@"yourKey"]; 
関連する問題