Objective-C - 如何将数组写入文件?

时间:2014-08-12 15:01:52

标签: arrays nsarray writetofile

我有一个可以扫描的文本文件(NSScanner)和标签。结果存储在一个数组中。结构是两个字符串,一个用于英语,一个用于希腊语。

我想写一个维护数组结构的输出文件。我认为我可以为此创建一个plist文件。

但是,我遇到困难,需要帮助才能创建此文件。

我测试文件是否已创建,但我得到了这个结果:

outgoingWords.count: 442
2014-08-12 17:54:17.369 MyScanner[97350:2681695] *** Assertion failure in -[ViewController checkArray], /Users/david/Desktop/Word Scanning/MyScanner/MyScanner/ViewController.m:98
2014-08-12 17:54:17.373 MyScanner[97350:2681695] Failed to set (contentViewController) user defined inspected property on (NSWindow): writeToFile failed

我目前使用的代码如下:

-(void)checkArray {

    //do stuff to verify the array       

    long i = outgoingWords.count;
    NSString *tempString = [NSString stringWithFormat:@"%li", i];
    NSLog(@"outgoingWords.count: %@", tempString); //442

    NSArray *tempArray2 = [outgoingWords copy];
    NSString *path = [[NSBundle mainBundle] pathForResource:@"/Users/David/Desktop/alfa2" ofType:@"plist"];

    BOOL success = [tempArray2 writeToFile:path atomically:YES];
    NSAssert(success, @"writeToFile failed");
  }

有人可以确定我遗漏的内容,或者指出我可以使用的现有答案(我看过了)..

非常感谢..

修改。我也在this SO question尝试了这种方法。但得到相同的结果。

 NSString *path = [[NSBundle mainBundle] pathForResource:@"/Users/David/Desktop/alfa2" ofType:@"plist"];

    NSString *error;
    NSData *data = [NSPropertyListSerialization dataFromPropertyList:tempArray2 format:NSPropertyListBinaryFormat_v1_0 errorDescription:&error];

    BOOL success = [NSKeyedArchiver archiveRootObject:data toFile:path];
    NSAssert(success, @"archiveRootObject failed");

1 个答案:

答案 0 :(得分:1)

问题是您正在写入捆绑包,这是不允许的。您应该写入文档或其他目录中的路径,例如:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
filePath = [documentsDirectory stringByAppendingPathComponent:@"FileName.xxx"];
[data writeToFile:filePath atomically:NO];