0

奇妙な問題があります。このコードは、ドキュメント フォルダー内にファイルが存在するかどうかを確認します。

- (BOOL) checkIfFileExist:(NSString *)path {    

    NSArray *documentsPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [documentsPaths objectAtIndex:0];
    NSString *fileDaControllere = [documentsDirectory stringByAppendingString:path];

    if ([[NSFileManager defaultManager] fileExistsAtPath:fileDaControllere]) {
        NSLog(@"exist");
        return YES;
    }
    else {
        NSLog(@"not exist");
        return NO;
    }
}

問題は、ファイルが存在している間、常にファイルが存在しないことです (この場合、パスは Style.css です)。間違いはどこですか?パスは正しいようです:

パス: /Users/kikko/Library/Application Support/iPhone Simulator/6.0/Applications/38161AFA-2740-4BE2-9EC4-C5C6B317D270/Documents/Style.css

ここでは、xcode 上のパスと実際のパスを確認できます

http://www.allmyapp.net/wp-content/iFormulario/1.png

http://www.allmyapp.net/wp-content/iFormulario/2.png

4

2 に答える 2

0

最後に、私はこの問題を解決しました。奇妙な考えは、私がそれをどのように解決したのかわからないということです。最初の問題は、相対パスを渡す必要があるときに絶対パスをcheckIfFifFileExistに渡し、関数がそれを変換することです絶対パスへ(私の大きな大きなエラー)、この後、問題は「/」の使用だと思います。すべてを削除してすべてのコードを書き直し、いくつかのテストを行います。

バンドルからフォルダーをコピーします:

NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir = [documentPaths objectAtIndex:0];

NSString *folderPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"/icone"];
NSString *iconePath = [documentsDir stringByAppendingPathComponent:@"/icone"];

[[NSFileManager defaultManager] copyItemAtPath:folderPath toPath:iconePath error:nil];

次に、この方法で画像のパスを作成します。

NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir = [documentPaths objectAtIndex:0];
 NSString *imagePath = [documentsDir stringByAppendingPathComponent:self.objMateria.iconaMateria];

そして今、ファイルが存在します。奇妙なことは、次の場合です。

self.objMateria.iconaMateria = /icona/Home/fisica.png

また

self.objMateria.iconaMateria = icona/Home/fisica.png

何も変わらない、画像が表示されますが、これの 1 つが間違ったパスを持っていると思います...

于 2012-12-07T00:52:48.810 に答える
0

問題は、パス区切り記号があるかどうかを確認せずにファイルを追加するだけであるという事実にある可能性があります。

NSString *fileDaControllere = [documentsDirectory stringByAppendingString:path];

したがって、あなたはのようになりますが../DocumentsStyle.css、そうあるべきです../Documents/Style.css

NSStringパスコンポーネントを追加するための特別な方法がありますstringByAppendingPathComponent:

NSString *fileDaControllere = [documentsDirectory stringByAppendingPathComponent:path];
于 2012-12-05T10:29:32.557 に答える