在iOS

时间:2015-06-25 08:35:59

标签: ios iphone xcode

我正在使用Xcode开发iOS应用。在其中一个接口实现(比如接口A)中,我在文件目录下创建文件。我可以从接口A访问它。但是从另一个接口(说接口B),如果我尝试访问我在接口A中创建的文件,我找不到文件。我在接口B中用来访问文件内容的方法如下所示

- (void)loadData{

if ([[NSFileManager defaultManager] fileExistsAtPath:_appFile]) {
    NSLog(@"Directory Exists");
    _appFile = [_appFile stringByAppendingPathComponent:@"info.txt"];
    if ([[NSFileManager defaultManager] fileExistsAtPath:_appFile]) {

        NSLog(@"File Exists");
        NSData *data = [[NSData alloc] initWithContentsOfFile:_appFile];

        if (data!=nil) {
            NSMutableDictionary *dict = (NSMutableDictionary *)
            [NSKeyedUnarchiver unarchiveObjectWithData:data];
            ToDoItem *item = [dict objectForKey:@"0"];
            [_toDoItems addObject:item];
        }
        else{
            NSLog(@"Data is empty");
        }
    }
    else{
        NSLog(@"File not exists");
    }
}
else{
    NSLog(@"Directory not exists");
}

}

我收到上述消息"目录不存在"。该目录与我从界面A引用的目录相同。但是无法从界面B访问。任何人都可以告诉我这是什么原因。

提前致谢

2 个答案:

答案 0 :(得分:1)

遵循MVC模式。 编写一个类,它将执行所有相关文件,并将文件名传递给该类并获取文件。 (你的loadData方法将进入) 因为如果一个是从一个接口访问,它也必须从另一个接口访问。

答案 1 :(得分:0)

检查您的_appFile可能是零。

我有这样的方法,你可以使用这样的东西通过在自定义的nsobject类中实现这种方法来移动到不同的类,并在每次需要时调用它。

- (BOOL)createWithName:(NSString *)fileName
{
    // make some writing here..

    NSFileManager *fileManager = [NSFileManager defaultManager];

    NSString *SearchPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];

    NSString *FilePath = [SearchPath stringByAppendingPathComponent:fileName];

    BOOL createStatus = [fileManager fileExistsAtPath:FilePath];

    if (createStatus)
    {
        NSLog(@"Log: Created!");
    }
    else
    {
        NSLog(@"Log: Failed!");
    }

    return createStatus;
}

这个用于带路径的搜索文件..

- (BOOL)findFileWithName:(NSString *)fileName inDirectory:(NSString *)directoryPath
{
    NSFileManager *fileManager = [NSFileManager defaultManager];

    // for staticly assigned directory path
    //
    //NSString *searchPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
    //

    NSString *mergedPath = [directoryPath stringByAppendingPathComponent:fileName];

    BOOL isAvailable = [fileManager fileExistsAtPath:mergedPath];

    if (isAvailable)
    {
        NSLog(@"Log: File found");
    }
    else
    {
        NSLog(@"Log: No file found");
    }

    return isAvailable;
}