2014-11-23 1 views
0

У меня есть проблема с редактированием моих пользовательских объектов класса, У меня есть пользовательский класс продукта, , когда я передаю его через следующий вид, где я могу исправить его количество и сохранить это к моему массиву appdelegate, все в порядке! Но если я попытаюсь добавить один и тот же продукт с другим количеством в тот же массив, первый объект будет перезаписан, и я получу второй объект дважды в моем массиве с одинаковыми значениями свойств, . Мой код должен быть грязным, чтобы пройти его здесь, поэтому здесь псевдо пример задачи:копировать nsobject собственный класс в массив после редактирования его свойств

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 

любая помощь оценили,

+0

Опубликовать соответствующий код, вызывающий проблему. Предоставьте соответствующую информацию о любых переменных в опубликованном коде. – rmaddy

ответ

1

сценарий указывает на простой первопричине: вы не делаете копию объекта перед его редактирования. Два объекта в вашем NSMutableArray фактически являются одним и тем же объектом.

Трудно определить проблему, не видя соответствующего кода. Тем не менее, вы должны убедиться, что продукты и количества не хранятся в одном объекте:

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

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

Вы должны добавлять OrderEntry объектов к вашим NSMutableArray. Каждый раз, когда вы добавляете новую запись, необходимо создать новый объект OrderEntry, а не изменять существующий.

+0

Thnx, NSCOPY реализован на уровне продукта и проблема решена. – mamadoo

+0

@mamadoo Это тоже сработает. Это может быть немного субоптимальным с точки зрения использования памяти, но поскольку количество копий будет в десятках, а не в десятках миллионов, разница будет незначительной. – dasblinkenlight

Смежные вопросы