1

iPhone初心者ですが、

私は本を​​ダウンロードし、それを という名前のフォルダーに保存するアプリを作成しましbook1FolderDocument directory

今、配列内のすべての書籍の名前が必要です。内部には 2 つの書籍がありますが、book1Folderこのコードを記述すると、配列の数が 3 であることがわかります。

これが私のコードスニペットです。

-(void)viewWillAppear:(BOOL)animated{
    NSString *files;
    NSString *Dir=[self applicationDocumentsDirectory];
    Dir=[Dir stringByAppendingPathComponent:@"book1Folder"];

    NSDirectoryEnumerator *direnum = [[NSFileManager defaultManager] enumeratorAtPath:Dir];

    Downloadedepubs = [[NSMutableArray alloc]init];
    while(files = [direnum nextObject])
    {
        if([[files pathExtension] isEqualToString:@"epub"])
            NSLog(@"files=%@",files);
            [Downloadedepubs addObject:files];
    }
}

私のログには 2 本の名前しか表示されませんが、配列をループすると 3 つのオブジェクトが含まれます。

[Downloadedepubs ObjectAtIndex:0]=.DS_Store;
[Downloadedepubs ObjectAtIndex:1]=abcd;
[Downloadedepubs ObjectAtIndex:2]=pqrs;

.DS_Storeそれが来る理由は何ですか?

どんな助けでも大歓迎です。

4

3 に答える 3

3

中かっこで if ブロックを取得します。if の後の最初の行のみに影響します。

以下のように;

if([[files pathExtension] isEqualToString:@"epub"]) {
            NSLog(@"files=%@",files);
            [Downloadedepubs addObject:files];
}
于 2012-07-25T09:22:14.163 に答える
0

これを試して:

  NSDirectoryEnumerator*    e = [[NSFileManager defaultManager] enumeratorAtPath:yourPathhere];

// Ignore any files except XYZ.epub
for (NSString*  file in e)
{
    if (NSOrderedSame == [[file pathExtension] caseInsensitiveCompare:@"epub"])
    {
           // Do something with file.epub
               [Downloadedepubs addObject:files];

    }
    else if ([[[e fileAttributes] fileType] isEqualToString:NSFileTypeDirectory])
    {
        // Ignore any subdirectories
        [e skipDescendents];
    }
}
于 2012-07-25T09:25:17.970 に答える
0

.DS_Store は Mac の隠しファイルで、ファイル メッセージをフォルダに保存します。削除できます

于 2012-07-25T09:21:18.880 に答える