假设我有一个名为savePlist的自定义函数,如下所示。
CommonClass.m
- (NSString *)getDirectoryPath
{
NSArray *pathList = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *path = [pathList objectAtIndex:0];
return path;
}
- (void)savePlist:(NSString *)fileName WithArray:(NSArray *)fileArr
{
NSString *path = [[self getDirectoryPath] stringByAppendingPathComponent:fileName];
[fileArr writeToFile:path atomically:YES];
}
当我运行如下代码时,不会生成任何plist。
ABCAppDelegate.m
...
[cc savePlist:@"example.plist" WithArray:[NSArray new]];
尚未生成example.plist的文件,我的代码是否有任何错误?
由于
更新:
如果我使用下面的代码,则xxx.plist文件已成功生成。
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *plistFile = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"abc.plist"];
NSMutableDictionary *plist = [[NSMutableDictionary alloc] initWithContentsOfFile:plistFile];
if (!plist) {
plist = [NSMutableDictionary new];
[plist writeToFile:plistFile atomically:YES];
NSLog(@"write plist");
}
参考:link
更新2:
我更改了以下代码:
NSLog(@"code");
[cc savePlist:@"example.plist" WithArray:[NSArray new]];
NSLog(@"code");
- (void)savePlist:(NSString *)fileName WithArray:(NSArray *)fileArr
{
NSLog(@"fileName = %@, fileArr = %@", fileName, fileArr);
NSString *path = [[self getDirectoryPath] stringByAppendingPathComponent:fileName];
NSLog(@"path = %@", path);
[fileArr writeToFile:path atomically:YES];
}
它打印出来:
2011-10-10 14:24:00.560 ABC[3390:207] code
2011-10-10 14:24:00.561 ABC[3390:207] code
没有fileName =和fileArr =的消息,还有path = print out on log,所以savePlist中的代码还没有被执行?
答案 0 :(得分:0)
看起来您的公共类对象未实例化,并且您将所有这些消息发送到nil
。尝试在您的应用委托代码中记录cc,您可以在其中调用此方法。
您需要创建公共类的实例,例如
cc = [[CommonClass alloc] init];
(可能因您的设置而异)。