我有一个可以扫描的文本文件(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");
答案 0 :(得分:1)
问题是您正在写入捆绑包,这是不允许的。您应该写入文档或其他目录中的路径,例如:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
filePath = [documentsDirectory stringByAppendingPathComponent:@"FileName.xxx"];
[data writeToFile:filePath atomically:NO];