在编辑它的属性后,将nsobject自定义类复制到数组

时间:2014-11-23 01:13:10

标签: ios objective-c pointers nsarray

编辑自定义类对象时遇到问题, 我有一个定制的产品类, 当我通过下一个视图传递它,我可以修复它的数量,并将其保存到我的appdelegate数组,一切都好! 但是,如果我尝试将相同的产品与另一个数量添加到同一个数组,第一个对象会被覆盖,我会在我的数组中使用相同的属性值两次获得第二个对象, 我的代码在这里凌乱过去,所以这里有一个问题的伪示例:

view A: list of products

class product:
title
quantity

View B: product details
set quantity


let's say I choose product apple:
in view B quantity set to 2
added to array


if I select product apple again
set quantity to 1
added to array

as result I do get an array of 2 objects:
-apple quantity 1
-apple quantity 1

任何帮助表示赞赏,

1 个答案:

答案 0 :(得分:1)

该场景指出了一个简单的根本原因:在编辑对象之前,您没有复制该对象。 NSMutableArray中的两个对象实际上是同一个对象。

如果没有看到相关代码,很难确定问题。但是,您需要确保产品和数量不存储在同一对象中:

@interface Product
@property NSString *name;
@property NSDecimal *price;
@end

@interface OrderEntry
@property Product *product;
@property int quantity;
@end

您应该将OrderEntry个对象添加到NSMutableArray。每次添加新条目时,都需要创建一个新的OrderEntry对象,而不是修改现有的对象。