将文件保存和检索到文档目录中的数组 Xcode iOS

saving and retrieving files to an array in documents directory Xcode iOS

我有一个应用程序,我想为和我一起玩游戏的每个人保存一个用户名,然后将其检索到一个数组中,该数组可用于为表视图创建 headers。我正在使用此代码保存文件。

NSError *error;
    NSFileManager *fileMgr = [NSFileManager defaultManager];
    NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [documentPaths objectAtIndex:0];
    NSString *slash2 = [documentsDirectory stringByAppendingString:@"/Names"];
    if (![[NSFileManager defaultManager] fileExistsAtPath:slash2])
        [[NSFileManager defaultManager] createDirectoryAtPath:slash2 withIntermediateDirectories:NO attributes:nil error:&error1];


    //yourName is the userName of the challenger

   NSString *fullPath = [slash2 stringByAppendingPathComponent:yourName];

当我查看路径时

NSLog(@"path :%@",fullPath);

我明白了

"Names/Mary",
"Names/John",

然后我想将这些名称从文档目录中获取到一个数组中以供 tableview 使用。我试过了

 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *slasha = [documentsDirectory stringByAppendingPathComponent:@"/Names"];


NSArray *arrayFromFile = [NSArray arrayWithContentsOfFile:slasha];

for (NSString *element in arrayFromFile)
    NSLog(@"Names: %@", element);

但什么也没显示

我做错了什么,我该怎么做

user1114881,

正在创建文件夹以在 tableView 中显示挑战者姓名 header,认真的???我会说这是一个非常错误的做法。

话虽这么说,现在让我解决你的问题,

NSError *error;
    NSFileManager *fileMgr = [NSFileManager defaultManager];
    NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [documentPaths objectAtIndex:0];
    NSString *slash2 = [documentsDirectory stringByAppendingString:@"/Names"];
    if (![[NSFileManager defaultManager] fileExistsAtPath:slash2])
        [[NSFileManager defaultManager] createDirectoryAtPath:slash2 withIntermediateDirectories:NO attributes:nil error:&error1];


    //yourName is the userName of the challenger

   NSString *fullPath = [slash2 stringByAppendingPathComponent:yourName];
   BOOL Success = [[NSFileManager defaultManager] createFileAtPath:fullPath contents:nil attributes:nil];

您犯的错误是,您从未为用户创建文件,您只是创建了一个名为 Names 的文件夹。您需要调用 createFileAtPath 来创建文件。

要读取文件夹中的所有文件,请使用

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *slasha = [documentsDirectory stringByAppendingPathComponent:@"/Names"];
NSArray * directoryContents = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:slasha error:nil];

您现在必须能够看到文件夹名称中所有文件的列表:)

编码愉快。