如何将NSMutable数组附加到现有文件中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将NSMutable数组附加到现有文件中相关的知识,希望对你有一定的参考价值。

我是编码方面的新手,并试图学习目标c,我尝试在Internet和堆栈溢出上搜索我的问题,但未获得正确的解决方案。我试图将一些数据保存到数组中,然后再将该子数组保存到主数组中,然后将该主数组保存到文件中。下面的代码对我来说正常工作,但数据未追加到文件中。

self.details = [[NSMutableArray alloc]init];
[self.details insertObject:self.firstName atIndex:0];
[self.details insertObject:self.lastName atIndex:1];
[self.details insertObject:[NSNumber numberWithLong:self.depositAmount] atIndex:2];
[self.details insertObject:[NSNumber numberWithInt:self.accountNumber] atIndex:3];

 for (int i=0; i<self.details.count;i++) {
   NSLog(@"%@",self.details[i]);
 }

 self.mainarray = [[NSMutableArray alloc]init];

 [self.mainarray addObjectsFromArray:self.details];

 NSString *path = @"/Users/testapp/data";

[self.mainarray writeToFile:path atomically:YES];
  enter code here
  for (int i=0; i<self.mainarray.count;i++) {
    NSLog(@"%@",self.mainarray[i]);
 }
答案

writeToFile:path实际上已被弃用(如您在此处看到的https://developer.apple.com/documentation/foundation/nsdata/1408033-writetofile?language=objc

通常,执行此操作取决于您追加的含义?如果从字面上看只是将数据转储到结尾(不一定使文件成为合法数组),则可以以附加模式打开文件,可以将输出流用于(https://developer.apple.com/documentation/foundation/nsoutputstream/1564841-outputstreamtofileatpath?language=objc

但是,我想知道您要将新的数组对象附加到文件中,以便构造文件。为此,您需要读取文件并以某种方式将其解码为数组。您将需要一种表示数据的方法,例如使用JSON(https://developer.apple.com/documentation/foundation/nsjsonserialization),以便可以将数组保存到文件中,反之亦然。

但是您需要先读取文件,然后添加新的结构化数据,这样文件仍然有意义。有很多处理文件的方法(NSCoding,C文件等),但是一种简单的方法是使用NSOutputStream(https://developer.apple.com/documentation/foundation/nsoutputstream)和NSInputStream(https://developer.apple.com/documentation/foundation/nsinputstream?language=objc

以上是关于如何将NSMutable数组附加到现有文件中的主要内容,如果未能解决你的问题,请参考以下文章

将 NSMutable 数组存储到 sqlite 数据库中

如何将数据附加到 MERN 堆栈中 mongodb 中的现有数组

如何附加到PHP中的现有数组值[重复]

如何将文本附加到 Java 中的现有文件?

如何将新数据附加到属性文件中的现有数据?

如何将 NSMutable 数组中的数据存储在 Core Data 中?