取代旧的对象,我用Objective-C编程新手,我得到了我的NSMutableArray一个问题...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
非常感谢您的帮助:)
请详细说明问题。而且,仅供参考,TabObjets是一个可变数组,而不是字典,因此其行为如预期。我错过了什么? – Monolo 2013-03-19 19:47:34
对不起,但我不是英文^^,并得到了一些问题要非常明确。 如你所说,如果我的数据被NSMutableArray覆盖是正常的? – Glou94 2013-03-19 19:53:44
是的,这是正常的。在第一次运行中,您添加一个对象并保存该数组。在第二次运行中,您用第一个对象读取数组,添加一个新数组,这样该数组就有两个项目。然后你保存它。它应该是。 – Monolo 2013-03-19 19:57:09