数组分配问题

时间:2011-04-05 08:39:52

标签: iphone objective-c

我有一个单例对象是我已定义的卡片我想要更改此卡片的价值......

@interface CartesManager : NSObject {
    NSMutableArray *carteMan ; 
    NSInteger indexCarteCourante ;
    BOOL isEditable ;
}

@property(nonatomic,retain) NSMutableArray *carteMan ; 
@property(nonatomic)        NSInteger indexCarteCourante ; 
@property(nonatomic)        BOOL isEditable ; 

+(CartesManager*)sharedInstance;

对象:

@interface Carte : NSObject {
    NSString *titre ; 
    NSString *commentaire ; 
    UIImage *image1 ; 
    UIImage *image2 ; 
    NSString *information ; 
} 
@property (nonatomic,retain )NSString *titre ; 
@property (nonatomic,retain) NSString *commentaire ; 
@property (nonatomic,retain) UIImage *image1 ; 
@property (nonatomic,retain) UIImage *image2 ; 
@property (nonatomic,retain) NSString *information ; 





-(void) edit:(id)sender 
{
    Carte *uneCarte = [[Carte alloc]init]; 
    uneCarte.titre = textField.text ; 
    uneCarte.commentaire = textView.text ; 
    uneCarte.image1 = imageView1.image ; 
    uneCarte.image2 = imageView2.image; 
    [[[[CartesManager sharedInstance] carteMan]objectAtIndex:[[CartesManager sharedInstance]indexCarteCourante]]addObject:uneCarte]; //don't Work to allocate in my array in this carte 
}

2 个答案:

答案 0 :(得分:2)

您正在添加对象,而不是修改数组中的现有对象。尝试:

-(void) edit:(id)sender
{ 
  Carte *uneCarte = [[[CartesManager sharedInstance] carteMan]objectAtIndex:[[CartesManager sharedInstance]indexCarteCourante]];
  uneCarte.titre = textField.text;
  uneCarte.commentaire = textView.text;
  uneCarte.image1 = imageView1.image;
  uneCarte.image2 = imageView2.image;
}

希望这有帮助。

答案 1 :(得分:0)

实际上如果[[[CartesManager sharedInstance] carteMan] objectAtIndex:[[CartesManager sharedInstance] indexCarteCourante]];是一个Carte *,然后他试图将Carte *添加到另一个Carte *:

[[[[CartesManager sharedInstance] carteMan]objectAtIndex:[[CartesManager sharedInstance]indexCarteCourante]]addObject:uneCarte];

等同于

Carte *carte = [[[CartesManager sharedInstance] carteMan]objectAtIndex:[[CartesManager sharedInstance]indexCarteCourante]]
[carte addObject: uneCarte]

将Carte *添加到数组中:

[[[CartesManager sharedInstance] carteMan] addObject:uneCarte];

并且为了避免在将来重构代码中出现这样的问题,所有这些[[[[在一行中使其难以理解并且容易出错。