2012-03-09 13 views
0

NSUserDefaultで「お気に入りに追加」しています。 NSMutableArrayに配列を追加するときにこの問題が発生しています。誰かが私が間違っていたことを知っていますか?どうもありがとうございました。昨日このような何かをやっNSMutableArrayにオブジェクトを追加できません

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
NSMutableArray *favoriteRecipes = [[NSMutableArray alloc] init]; 


if ([prefs objectForKey:@"myFavor"] == nil) { 
    //create the array 
    NSMutableArray *array = [[NSMutableArray alloc] init]; 
    [prefs setObject:array forKey:@"myFavor"]; 
    [array release]; 
} 
NSMutableArray *tempArray = [[prefs objectForKey:@"myFavor"] mutableCopy]; 
favoriteRecipes = tempArray; 
[tempArray release]; 

NSArray *charArray = [[NSArray alloc] initWithObjects: @"test1", @"test2" , nil]; 

//add the recipe 
[favoriteRecipes addObject:[charArray objectAtIndex:0]]; 

//save the array to NSUserDefaults 
[prefs setObject:favoriteRecipes forKey:@"myFavor"]; 
[prefs synchronize]; 
+0

から私のお気に入りリストをしたいですか何で、あなたが期待される望ましい結果を得ることができ、実行時エラーを取得したりしていません。 –

+0

はい、実行時エラー –

答えて

1
favoriteRecipes = tempArray; 

instated of above line use be below line it will work fine 

[favoriteRecipes addObjectsFromArray:tempArray]; 
+0

ありがとうございます。私は理由を知らないが、それは動作します。それは私がやったことと変わらないはずです。 –

+0

私はもう一度同様の問題を抱えています。ここで私のエラーメッセージは: 'キャッチされていない例外' NCSnvalidArgumentException 'の理由でアプリケーションを終了しています:理由:' - [__ NSCFArray isEqualToString:]:インスタンスに送信された認識できないセレクタ ' –

+0

My Script: - (void)viewDidLoad {[super viewDidLoad]; NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults]; NSMutableArray * titleArray = [[オブジェクトオブジェクトのデフォルト値:@ "myFavor1"] mutableCopy]; self.dataArray = titleArray; self.tableView.allowsMultipleSelectionDuringEditing = YES; self.deleteButton.tintColor = [UIColor redColor]; self.navigationItem.rightBarButtonItem = self.editButton; [self resetUI]; } –

0

。以下の私のコードを見てください。あなたが私のように同じことをしたいのかどうかはわかりません。

NSDictionary *tempDictionary = [NSDictionary dictionaryWithObjectsAndKeys:productID,@"ID",productTitle,@"title",productPrice,@"price",imageUrl,@"image",shipping,@"shipping_day", nil]; 

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
NSMutableArray *cartList = [[defaults objectForKey:@"CART_ITEMS"] mutableCopy]; 

if(!cartList) 
    cartList = [[NSMutableArray alloc] init]; 

if([cartList indexOfObject:tempDictionary] == NSNotFound) 
{ 
    NSLog(@"add favorite"); 
    [cartList addObject:tempDictionary]; 
    [defaults setObject:cartList forKey:@"CART_ITEMS"]; 
    [defaults synchronize]; 
    [sender setTitle:@"Remove" forState:UIControlStateNormal]; 
} 
else 
{ 
    NSLog(@"remove favorite"); 
    [cartList removeObject:tempDictionary]; 
    [defaults setObject:cartList forKey:@"CART_ITEMS"]; 
    [defaults synchronize]; 
    [sender setTitle:@"Add to cart" forState:UIControlStateNormal]; 
} 

これは、私は毎回私は混乱していますNSUserDefault

-(void)getCartList 
{ 
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
NSMutableArray *cartList = [[defaults objectForKey:@"CART_ITEMS"] mutableCopy]; 
productListArr = [NSMutableArray arrayWithArray:cartList]; 
NSLog(@"cart list data == %@", cartList); 
} 
+0

私と共有していただきありがとうございます。私は '保存'作業を得た。 'Retrieve'に問題があります。あなたのgetCartList()のように非常に似ています。しかし、私はランタイムエラーが発生しました:未知の例外 'NSInvalidArgumentException'の理由でアプリケーションを終了しています: ' - [__ NSCFArray isEqualToString:]:インスタンスに送信された認識できないセレクタ –

+0

どこでその例外を取得しますか? – janusbalatbat

+0

NSMUtableArrayにNSDictionary "tempDictionary"が含まれています。これはデータをセルオブジェクトに割り当てる方法です。 [cell.textLabel setText:[productListArr objectAtIndex:indexPath.row] objectForKey:@ "text_key"]]; – janusbalatbat

関連する問題