目前,我正在使用以下代码将先前会话中的数据加载到我的应用程序中。为了防止没有先前的数据,我在使用临时变量来检查返回值,然后再进行分配。我只是在这里张贴,因为这感觉有点笨拙,有没有办法检查磁盘上存在的文件,所以我可以在继续之前检查,或者我有什么方法可以去?
NSMutableArray *artistCollection;
NSMutableArray *artistCollection_LOAD;
artistCollection = [[NSMutableArray alloc] init];
artistCollection_LOAD = [NSKeyedUnarchiver unarchiveObjectWithFile:@"/data"];
if(artistCollection_LOAD != nil) artistCollection = artistCollection_LOAD;
else NSLog(@"(*) - Saved Data Not Found");
在此之前,我(见下文),但你可以想象,如果NSKeyedUnarchiver找不到文件并返回“nil”,它会破坏我以前分配的数组。
artistCollection = [[NSMutableArray alloc] init];
artistCollection = [NSKeyedUnarchiver unarchiveObjectWithFile:@"/data"];
加里
答案 0 :(得分:12)
Cocoa有一个类,它为处理文件系统对象提供支持:NSFileManager。您可以将标准文件管理器(由+defaultManager
提供)与-fileExistsAtPath:
方法结合使用,该方法返回BOOL
值,以确定文件是否存在:
if([[NSFileManager defaultManager] fileExistsAtPath:@"/data"]) { /* ... */ }
请记住,这并不能告诉您文件是否可访问(权限方面),目录等等。还有其他NSFileManager函数。