0

我查看了 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");  
} 
4

1 回答 1

1

我假设 -writeToFile 返回 NO 所以你看到你的 NSLog 语句(如果我错了,请纠正我)。如果是这种情况,那么问题一定是您的日期数组或馈送数组中的某些对象不是属性列表允许的任何对象类型,其中包括:NSString、NSData、NSArray 或 NSDictionary。不允许使用 NSNull。来自 writeToFile 的文档:

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

于 2009-12-29T21:15:53.650 回答