2

コード:

NSString *path = [[NSBundle mainBundle] pathForResource:[objDynaMoThumbnailImages objectAtIndex:eg] ofType:@"jpg" inDirectory:[objDynaMoProductImagePath objectAtIndex:eg]];

このようなパスを取得します

/Users/software/Library/Application Support/iPhone Simulator/6.0/Applications/61AE2605-CE8E-404D-9914-CDA9EBA8027C/DynaMO.app/original/1-1.jpg

上記のパスから、「original/1-1.jpg」のみを取得する必要があります。私を助けてください.....

4

3 に答える 3

2

猫の皮を剥ぐにはいくつかの方法があります。

NSString* lastFile = [path lastPathComponent];
NSString* lastDir = [[path stringByDeletingLastPathComponent] lastPathComponent];
NSString* fullLast = [lastDir stringByAppendingPathComponent:lastFile];
于 2012-11-05T04:51:15.743 に答える
1

次のコードは、リソースがアプリケーション バンドルの任意のサブディレクトリにある場合に使用できます。リソースがバンドル パスのちょうど 1 つのサブディレクトリであるとは想定していません。

NSString *path = [[NSBundle mainBundle] pathForResource:...];
NSString *bundlePath = [[NSBundle mainBundle] bundlePath];
NSString *relativePath;
if ([path hasPrefix:bundlePath]) {
    relativePath = [path substringFromIndex:([bundlePath length] + 1)];
} else {
    relativePath = path;
}

例えば

path = /Users/software/Library/Application Support/.../DynaMO.app/sub/dir/image.jpg

結果として

relativePath = sub/dir/image.jpg
于 2012-11-05T06:08:46.673 に答える
1

NSString メンバー関数 lastPathComponent を使用できます。

NSString filename = [yourString lastPathComponent];

編集:申し訳ありませんが、パスからファイル名を探しているのではなく、ファイル名の親フォルダーから始まるサブパスを探しているようです。上記の方法では、ファイル名文字列のみが得られます。しかし、あなたはこのようにすることができます..

-(NSString *) getSubPath:(NSString*)origPath{
   NSArray * array = [origPath componentsSeparatedByString:@"/"];
   if(!array  || [array length] == 0 || [array length] == 1)
     return origPath;
   int length  =  [array length];
   return [NSString stringWithFormat:@"%@/%@", [array objectAtIndex:(length - 2)], [array lastObject]];
}

そして、あなたはそれをこのように使うことができます

NSString *subPath  = [self getSubPath:origPath];
于 2012-11-05T04:42:59.153 に答える