2012-10-10 124 views
0

我有一種情況,在一個循環中,我試圖添加一個對象到NSMutableArray。循環結束時,它顯示54個對象(作爲示例)被添加到數組中,但是當我試圖從數組中讀取對象時,顯然它們都是相同的,並且與最後一樣插入到數組中的對象。將對象添加到NSMutablearray無法正常工作

任何人都可以請幫我這個issue.This是我的代碼:

int counter=0; 

for (int j=0; j<rows; j++) 
{  
    Product *product ; 
    product = [[Product alloc] init]; 
    int numberr= [product getImageNumber]; 
    [wineList addObject:product]; 
    counter = counter + 1; 
} 

添加對象後,我測試這我得到了相同的結果,每個項目的陣列的內容陣列

//testing 
Product *producttest1 = wineList[1]; 
int numbertest1= [producttest1 getImageNumber]; 
Product *producttest2 = wineList[20]; 
int numbertest2= [producttest2 getImageNumber]; 

在這是我有所述Product類的定義:

#import "Product.h" 
@implementation Product 

int imageNumber; 
bool isInCase; 

-(id) init { 
    imageNumber = (arc4random() % 11) + 1; 

    isInCase = false; 

    return self; 
} 

-(int) getImageNumber { 

    return imageNumber; 
} 

-(void) setImageNumber:(int) number { 

    imageNumber = number; 
    } 
+1

您可以添加getImageNumber的定義嗎? –

+0

何時在產品對象上設置imageNumber?我看不出有任何證據證明你正在做這件事。 –

+0

代碼中的getImageNumber函數是什麼?請發佈整個模型類。 –

回答

0

您的代碼也許應該是這樣的,

int counter=0; 
for (int j=0; j < rows; j++) 
{  
    Product *product = [[Product alloc] init]; // Added variable declaration inside. 
    int numberr= [product getImageNumber]; 
    [wineList addObject:product]; 
    [product release];       // Added release for product 
    counter = counter + 1; 

} 
+0

當我寫作「[產品發佈];」我得到這個錯誤:版本不可用:在自動引用計數模式下不可用 – MaryamAyd

+0

Ohh是的.. ARC不允許發佈語句。上面的for循環是否在[產品發佈]中不起作用;聲明? – Saroj

+0

不幸的是它不 – MaryamAyd

1

-init方法不會初始化類。撥打電話[super init]

-(id)init { 
    self = [super init]; 

    if (self) { 
     imageNumber = (arc4random() % 11) + 1; 
     isInCase = false; 
    } 

    return self; 
} 
+0

我這樣做,但問題仍然存在。 – MaryamAyd

+0

您究竟如何檢查它是否「有效」?你使用調試器來追蹤發生了什麼? –

+0

如果您檢查上面的測試部分,我添加了一些代碼來檢查數組中的兩個項目的值,它顯示它們都具有與插入到數組中的最後一個項目相同的值。 – MaryamAyd