0

I have a singleton object is a card I already defined I want to change the value of this card currant...

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

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

+(CartesManager*)sharedInstance;

Object:

@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 
}
1
  • [[[[CartesManager sharedInstance] carteMan]objectAtIndex:[[CartesManager sharedInstance]indexCarteCourante]]addObject:uneCarte]; //don't Work to allocate in my array this current carte } Commented Apr 5, 2011 at 8:56

2 Answers 2

2

You are adding an object instead of modifying an existing object in the array. Try:

-(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;
}

Hope this helps.

Sign up to request clarification or add additional context in comments.

Comments

0

actually if [[[CartesManager sharedInstance] carteMan]objectAtIndex:[[CartesManager sharedInstance]indexCarteCourante]]; was a Carte*, then he tried to add a Carte* to another Carte*:

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

being equivalent to

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

to add a Carte* to the array:

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

and to avoid such problem in the future refactor the code, all of those [[[[ in one line make it hard to understand and easy to make an error.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.