我查看了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");
}
答案 0 :(得分:1)
我假设-writeToFile返回NO,所以你看到你的NSLog语句(如果我错了,请纠正我)。如果是这种情况,则问题必须是 date 数组或 fed 数组中的某个对象不是属性列表的任何允许对象类型,其中包括: NSString,NSData,NSArray或NSDictionary。 NSNull是不允许的。来自writeToFile的文档:
此方法以递归方式验证 所有包含的对象都是属性 在写出之前列出对象 文件,如果全部则返回NO 对象不是属性列表对象, 因为结果文件不会 有效的房产清单。