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

时间:2016-05-19 16:59:52

标签: ios nsarray nsdocumentdirectory

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

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);

但没有出现

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

1 个答案:

答案 0 :(得分:1)

user1114881,

创建文件夹以在tableView标题中显示挑战者名称,严重???我会说这是一个非常错误的方法。

话虽如此,现在让我解决你的问题,

gcc -Wall -Wextra yourFileName.c

你正在做的错误是,你从未为用户创建过文件,你刚刚创建了一个名为Names的文件夹。您需要调用createFileAtPath来创建文件。

为了阅读文件夹中的所有文件

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];

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

快乐的编码。