2011-07-22 13 views
8

私はsavePanelシートからURLを受けていると私は、次の操作を行いたいと思います:それは、それ を削除しない場合、それは延長 NSURLファイル拡張子の追加など

  • を持っているかどうかを確認するために

    • チェックそれは、これを行うには、任意の簡単な方法カスタム拡張

    を追加しない場合

  • は、カスタム拡張
  • を追加..私はBUを、次のようなものを試してみましたそれは

    if ([tmp pathExtension] != @"xxx") 
        path = [tmp stringByAppendingFormat:@"xxx"]; 
    

    [OK]を動作しません...可能な解決策をこれはNSStringの方法を用いて達成することができます

    NSString *path; 
    NSURL *filepath; 
    fileurl = [sheet URL]; 
    fileurl = [fileurl URLByDeletingPathExtension]; 
    fileurl = [fileurl URLByAppendingPathExtension:@"yyy"]; 
    path = [fileurl path]; 
    
  • +0

    をあなたはそれを解決しましたか? –

    +0

    はいヴィンス..助けてくれてありがとう。どちらのソリューションもうまく動作します。 –

    答えて

    7

    を次のようにtは。文字列の比較では、ポインタの等価性をテストする==ではなく、isEqualToString:を使用する必要があります。

    延長について:-(NSString *)pathExtension;。拡張機能を削除するには、-(NSString *)stringByDeletingPathExtension;を使用します。

    拡張子を追加するすべてのケースでは、たとえば、+(NSString *)stringWithFormat:を使用して新しい文字列を作成します。

    ので:

    NSString *finalString; 
    if([[tmp pathExtension] isEqualToString:@"xxx"]) { 
        finalString = [tmp stringByDeletingPathExtension]; 
    } 
    finalString = [NSString stringWithFormat:@"%@.yyy", finalString]; 
    
    +1

    友人からの別の解決策.... NSString * path; NSURL *ファイルパス。 fileurl = [シートURL]; fileurl = [ファイルURL URLByDeletingPathExtension]; fileurl = [ファイルURL URLByAppendingPathExtension:@ "yyy"]; パス= [fileurlパス]; –

    1

    @ user756245することにより、この同じページで指定された実行可能なソリューションへの代替アプローチが異なるNSString方法を使用して:

    NSString *finalString; 
    if([[tmp pathExtension] isEqualToString:@"xxx"]) { 
        finalString = [tmp stringByDeletingPathExtension]; 
    } 
    
    finalString = [finalString stringByAppendingPathExtension:@"yyy"]; 
    
    関連する問題