gpt4 book ai didi

ios - NSMutableArray 总是用最后一个替换旧对象

转载 作者:行者123 更新时间:2023-11-28 20:22:06 41 4
gpt4 key购买 nike

我是 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

非常感谢您的帮助:)

最佳答案

您覆盖了您的tabObjet。只需在 saisieReturn: 中声明并将其更改为

- (IBAction)saisieReturn :(id)sender{
[sender resignFirstResponder];

NSLog(@"Tabobjets avant : %@",tabObjets);

//inscription dans un dictionnaire
tabObjet = [[NSMutableDictionary alloc] init];
[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"];

[tabObjets addObject:tabObjet];

NSLog(@"Tabobjet apres : %@",tabObjet);
NSLog(@"Tabobjets apres : %@",tabObjets);

//écriture dans un fichier plist
[tabObjets writeToFile:appFile atomically:YES];
}

关于ios - NSMutableArray 总是用最后一个替换旧对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15508975/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com