0

当我的应用程序启动时,查看是否存在 plist,如果不存在则创建它。

NSFileManager *fileManager = [NSFileManager defaultManager];
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"history.plist"];
    success = [fileManager fileExistsAtPath:filePath];
    if (success) {
        NSArray *arr = [[NSArray alloc] initWithContentsOfFile:[documentsDirectory stringByAppendingPathComponent:@"history.plist"]];
        for (NSDictionary *par in arr) {
            [self.history addObject:[[Paradero alloc] initWithDictionary:par]];
        }
    } else {
        [fileManager createFileAtPath:filePath contents:nil attributes:nil];
    }

现在,当用户关闭应用程序时,为了提供持久性,我将数据保存到该文件

- (void)applicationDidEnterBackground:(UIApplication *)application {
    /*
     Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 
     If your application supports background execution, called instead of applicationWillTerminate: when the user quits.
     */
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"history.plist"];
    NSLog(@"%@", filePath);
    NSMutableArray *temparray = [[NSMutableArray alloc] initWithCapacity:5];
    for (Paradero *parada in self.history) {
        [temparray addObject:[parada asDictionary]];
    }
    NSLog(@"%@", temparray);
    NSLog(@"%c",[temparray writeToFile:filePath atomically:NO]);

    NSLog(@"yei");
}

该对象被转换为带有 NSString、NSArrays 的字典,因此可以将其保存到文件中。第一次发生这种情况,这意味着,文件被创建,上面什么都没有,它工作得很好,但是什么时候保存新数据,它失败了,没有给出任何理由。

4

1 回答 1

4

解决了。记录在案:第一个问题是我在 iOS5 模拟器上进行测试,嗯,我还不知道如何修复它。

真正的问题是因为周围有一些 NSNull,所以我只需要将它们变成空字符串。

记得检查 NSNulls,如果它们来自 Web 服务,它们真的很痛苦。

于 2011-07-25T21:37:10.547 回答