2013-03-13 65 views
1

我已經解析了存儲在NSObject文件中的數據。然後我將目標文件存儲在一個數組中:NSObject不存儲在NSMutableArray中的目標c

[array addobject: object]; 

當我打印數組時,它只包含第一個對象值。

我在全局聲明瞭數組,爲它分配了內存,併爲對象分配了內存。

據打印:

陣列計數2和陣列是:

(

    "about 1st orders", 

    "about 2nd orders" 
) 

類是__NSArrayM

此前它被正確地存儲整個對象。

任何想法或建議,以解決這個問題?

+4

'NSObject'文件?什麼? – trojanfoe 2013-03-13 14:24:21

+0

@Mahesh,你需要寫一個更清晰的問題。在您的問題中添加更多代碼! – occulus 2013-03-13 14:26:36

+1

2天后我解決了我的問題,問題是NSObject具有默認屬性「description」,我在我自己的nsobject文件中聲明瞭描述,這就是爲什麼它沒有正確存儲在數組中。現在我將該屬性重命名爲descriptionString,現在它工作正常,謝謝你的回答。 – 2013-03-15 06:00:37

回答

0

您存儲在NSArray中的對象的定義是什麼?對於存儲在數組中的自定義對象,您應該重寫NSObject的isEqual方法。

對於存儲在諸如NSDictionary等地圖中的自定義對象,您也需要實現hashcode

+0

我認爲他可能在循環內部分配內存,因此只有一個對象被添加。不確定這個問題是否非常不健康。 – 2013-03-13 14:31:35

+0

爲什麼'isEqual'?你在想NSSet嗎? AFAIk你可以存儲你想要的任何NSObject到一個NSArray中...... – mrueg 2013-03-13 14:40:50

+1

@mrueg NSArray indexOfObject:例如。 – occulus 2013-03-13 15:15:27

2

以下描述了Logic for You,可能對您有所幫助。

首先創建一個類(名當你想

#import <Foundation/Foundation.h> 

@interface MyClassName : NSObject { 
    NSString *name; // set as per your requirement. 
    NSString *address; // set as per your requirement. 
    . 
    . 
    . 
} 
@property (retain, readwrite) NSString * name; 
@property (retain, readwrite) NSString * address; 
. 
. 
. 

和正確@synthesize和釋放參考。 (如果不使用ARC

而在這個類對象添加您的數組,然後獲取數據諸如此類,

編輯:

NSMutableArray *anOtherArray = [[NSMutableArray alloc] init]; 
    for(int i=0; i < listOfArray.count; i++) 
    { 
     MyClassName *myData = [self.listOfArray objectAtIndex:i]; 
     NSLog(@"%@", myData.name); 
     NSLog(@"%@", myData.address); 
     [anOtherArray addObject:myData.name]; 
     [anOtherArray addObject:myData.address]; 
    } 
+0

如果我打印NSLog(@「%@」,myData.name);我得到的價值,但我的問題是我將該對象添加到另一個數組,如[anotherArray addObject:myData];然後我只有第一個價值。通常另一個打印像這樣 2013-03-13 14:52:15

+1

謝謝,我會試試。 – 2013-03-13 15:04:07

+3

2天后我解決了我的問題,問題是NSObject具有默認屬性「description」,我在我自己的nsobject文件中聲明瞭描述,這就是爲什麼它不能正確存儲在數組中。現在我將它重命名爲descriptionString,現在它工作正常,謝謝你的回答...... – 2013-03-15 05:55:03

0

這裏時,把我最常做的物體排列成陣列:

#import <Foundation/Foundation.h> 

@interface ImageObject : NSObject 
{ 
    NSString *ImageURL; 
    NSString *Date; 
// put any other stuff here. 

} 

@property (nonatomic, strong) NSString *ImageURL; 
@property (nonatomic, strong) NSString *Date; 
// put any other stuff here too. 

@end 

然後當你想插入o bject:

NSMutableArray *yourMutableArray = [[NSMutableArray alloc]init]; 

NSArray *array = [[NSArray alloc]initWithArray:[self.imageDictionary objectForKey:@"images"]]; 
     for (NSDictionary *dict in array) { 
      ImageObject *imgObj = [[ImageObject alloc]init]; 
      imgObj.ImageURL = [dict objectForKey:@"ImageURL"]; 
      imgObj.Date = [dict objectForKey:@"LogDate"]; 
      [yourMutableArray addObject:imgObj]; 

     } 

和調用數組裏面的物品:

ImageObject *imgObj = [[ImageObject alloc]init]; 

imgObj = [yourMutableArray objectAtIndex:indexOfArray];