在NSMutableArray中添加和删除对象

时间:2014-04-18 18:04:50

标签: objective-c nsmutablearray

我正在iPad上实施购物车项目。

我有一个" productItem"

#import <Foundation/Foundation.h>

@interface ProductItem : NSObject

+(instancetype)createProductId:(NSString *)aId description:(NSString *)aDesc price:(int)aPrice;
@property(nonatomic, copy)NSString *productId;
@property(nonatomic, copy)NSString *description;
@property(nonatomic)int price;

@end

一个班级&#34; CartItem&#34;

  

@interface CartItem:NSObject

     

@property(非原子,弱)ProductItem * prodItem;   @property(nonatomic)int quantity;

     

+(instancetype)createProdItem:(posProductItem *)aProdItem数量:(int)aQuantity;

     

@end

我有另一个班级&#34; ProductStore&#34;。该类有2个NSMUtableAray,用于存储productItems和cartItems:

@property(nonatomic)NSMutableArray *productItems;
@property(nonatomic)NSMutableArray *cartItems;

我实现了2个ViewControllers,productSearchViewController和cartViewController。 cartViewController基本上显示了cartItems中的元素。

productSearchViewController的功能描述如下:

productSearchViewController

  • 产品显示在UICollectionView中。从Web服务检索的ProductItem填充到ProductStore NSMutableArray&#34; productItems&#34;

  • 产品项目可以添加到&#34; cartItems&#34;。
  

[CartItem createProdItem:aProdItem数量:1]; //这里aProdItem是ProductItem *

  • 用户可以在UISearchBar中搜索产品。我实现了(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString*)searchText来查询Web服务的数据。对于每次搜索,我都会清除NSMutableArray&#34; productItems&#34;并使用来自Web服务的数据重新填充它

因为我清除了UIMutableArray&#34; productItems&#34;,NSMutableArray中的productItem&#34; cartItems&#34;也被删除了。 cartItem元素仍然存在,但每个cartItem元素中的productItem为空:产品ID,描述和价格为空。

我该如何解决这个问题?将产品添加到购物车时,我应该将ProductItem对象复制到CartItems吗?

1 个答案:

答案 0 :(得分:1)

prodItem设置为nil,因为您已在weak的{​​{1}}中将其声明为CartItem属性:

@property(nonatomic,weak)ProductItem *prodItem;

如果您需要在strong类中使用CartItem属性,则应该使用productItems属性,即使它已从@property(nonatomic,strong)ProductItem *prodItem; 数组中删除。

{{1}}

虽然这可以解决您的问题,但清除productItems并保留cartItems实际上没有多大意义。