2013-03-13 66 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];