iPhone SDK:如何将用户输入的信息正确保存到.plist或其他文件中?

时间:2009-12-29 20:03:36

标签: iphone objective-c nsmutablearray nsdictionary

我查看了SDK文档以及其他已经提出的问题,我仍然对如何做到这一点感到困惑。我之前一直在使用以下代码,但它没有提供.plist文件的预期结果。除了在.m文件中的代码中的头文件中提到IBAction之外,还有什么需要添加或者我应该采用的方法吗?谢谢!

我的代码:

- (IBAction)fedDog { 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);  
    NSString *documentsDirectory = [paths objectAtIndex:0];  
    NSString *path = [documentsDirectory stringByAppendingPathComponent:@"dogsFedDays.plist"];   
    NSMutableArray *dogsFedSave = [NSMutableArray arrayWithCapacity: 100];  
    for (int i = 0; i < 100; i++) {  
        NSDictionary *myDict = [[NSDictionary alloc] initWithObjectsAndKeys:  
                                                        date[i], @"string", 
                                                        fed[i], @"Yes", 
                                                        nil];  
        [dogsFedSave addObject:myDict];  
        [myDict release];  
    }  
    if (![dogsFedSave writeToFile:path atomically:YES])  
        NSLog(@"not successful in completing this task");  
} 

1 个答案:

答案 0 :(得分:1)

我假设-writeToFile返回NO,所以你看到你的NSLog语句(如果我错了,请纠正我)。如果是这种情况,则问题必须是 date 数组或 fed 数组中的某个对象不是属性列表的任何允许对象类型,其中包括: NSString,NSData,NSArray或NSDictionary。 NSNull是不允许的。来自writeToFile的文档:

  

此方法以递归方式验证   所有包含的对象都是属性   在写出之前列出对象   文件,如果全部则返回NO   对象不是属性列表对象,   因为结果文件不会   有效的房产清单。