0

ドキュメントフォルダ内のすべてのディレクトリを確認し、eventListというNSArrayに名前がないディレクトリを一覧表示したいと思います。Evenlistは、ALAssetsGroupの配列です。コードは次のとおりです。

    NSLog(@"eventList %@",eventList);

    NSFileManager *fileManager = [NSFileManager defaultManager];        
    NSMutableArray *tagsFolderList = [[NSMutableArray alloc] init];
    tagsFolderList = [[fileManager contentsOfDirectoryAtPath:tagsPath error:nil] mutableCopy];

    NSLog(@"tagsFolderList %@",tagsFolderList);


    if(([tagsFolderList count] > 0) && ([eventList count] > 0))
    {
        for (int i=0; i<[eventList count]; i++) {
            NSString *eventName = [[eventList objectAtIndex:i] valueForProperty:ALAssetsGroupPropertyName];
            NSLog(@"eventName %@",eventName);

            [tagsFolderList removeObjectIdenticalTo:eventName];
        }

ログは次のとおりです。

    eventList (
        "ALAssetsGroup - Name:19 ao\U00fbt 2012, Type:Event, Assets count:27",
        "ALAssetsGroup - Name:21 ao\U00fbt 2012, Type:Event, Assets count:8",
        "ALAssetsGroup - Name:2 nov. 2012, Type:Event, Assets count:12",
        "ALAssetsGroup - Name:4 nov. 2012, Type:Event, Assets count:9"
    )
    tagsFolderList (
        "1 nov. 2012",
        "19 aou\U0302t 2012",
        "2 nov. 2012",
        "4 nov. 2012",
        "6 oct. 2012"
    )
    eventName 19 août 2012

ALAssetsGroupとディレクトリの名前が同じ「2012年11月4日」の場合でも、オブジェクトを削除できません。多くの文字列エンコード変換を試してみましたが、成功しませんでした。

なにか提案を ?

よろしく

4

1 に答える 1

1

removeObjectIdenticalTo:文字列値ではなく、オブジェクトアドレスを比較します。したがって、文字列が同じ文字列であっても、まったく同じオブジェクトである必要があります。それらを類似の文字実行と比較する場合は、NSStringのisEqualToStringメソッドを使用します。

于 2012-11-07T17:42:48.073 に答える