我是 Objective-C 编程的新手,我的 NSMutableArray 有问题...
当我第一次尝试时,我的数据保存得很好,但如果我想再试一次,第一个被新的覆盖,新的也被保存。
一个例子来理解:
第一次尝试:
Tabobjets : (
{
Contact = 1;
DateARendre = 1;
DateJour = "2013-03-19 19:27:29 +0000";
Nom = 1;
Rendu = 0;
Titre = 1;
}
)
第二次尝试:
Tabobjets : (
{
Contact = 2;
DateARendre = 2;
DateJour = "2013-03-19 19:27:40 +0000";
Nom = 2;
Rendu = 0;
Titre = 2;
},
{
Contact = 2;
DateARendre = 2;
DateJour = "2013-03-19 19:27:40 +0000";
Nom = 2;
Rendu = 0;
Titre = 2;
}
)
这是我的代码
@interface SecondViewController () {
NSMutableDictionary *tabObjet;
NSMutableArray *tabObjets;
NSString *appFile;
}
@end
@implementation SecondViewController
- (void)viewWillAppear:(BOOL)animated{
NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
// the path to write file
appFile = [documentsDirectory stringByAppendingPathComponent:@"Bigre.plist"];
if (tabObjets == nil) {
tabObjets = [[NSMutableArray alloc] initWithContentsOfFile:appFile];
}
if (tabObjet == nil) {
tabObjet = [[NSMutableDictionary alloc] init];
}
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (IBAction)saisieReturn :(id)sender{
[sender resignFirstResponder];
NSLog(@"Tabobjet avant : %@",tabObjet);
NSLog(@"Tabobjets avant : %@",tabObjets);
//inscription dans un dictionnaire
[tabObjet setObject:_titreObjet.text forKey:@"Titre"];
[tabObjet setObject:_nomPersonne.text forKey:@"Nom"];
[tabObjet setObject:_infoContact.text forKey:@"Contact"];
[tabObjet setObject:[NSDate date] forKey:@"DateJour"];
[tabObjet setObject:_dateARendre.text forKey:@"DateARendre"];
[tabObjet setObject:[NSNumber numberWithBool:NO] forKey:@"Rendu"];
int numItems = [tabObjets count];
[tabObjets insertObject:tabObjet atIndex:numItems];
NSLog(@"Tabobjet apres : %@",tabObjet);
NSLog(@"Tabobjets apres : %@",tabObjets);
//écriture dans un fichier plist
[tabObjets writeToFile:appFile atomically:YES];
}
@end
非常感谢您的帮助 :)