1

いくつかの同様の質問をチェックアウトしましたが、私の質問に対する答えが見つかりませんでした。

問題の最初の部分は、ファイルの相対パスを記述する方法です。私はこの作業を取得しませんでしたが、現時点では 2 番目の部分を移動させてください。相対パスではうまくいかなかったので、絶対パスでやってみました。私が使用するコードは次のとおりです。

NSString *path = [NSString stringWithFormat:@"/Users/my.name/Documents/TestFour/TestFour/Library/file%d.txt", i]; //where i is 1 or 2
//NSString *path = [NSString stringWithFormat:@"./TestFour/Library/file%d.txt", i]; //this relative path didn't work, although TestFour.xcodeproj and TestFour are in the same directory and TestFour has child directory Library and xxx.h and xxx.m files
NSString *spath = [path stringByStandardizingPath];
NSLog(@"file is %@", spath);
if (spath) {
    NSString *myText = [NSString stringWithContentsOfFile:spath encoding:NSUTF8StringEncoding error:nil];
    //continue, and I got myText ....

上記の file1.txt と同じディレクトリ、つまり Library フォルダに myPic.jpg という jpg ファイルがあります。この画像を UIImageView にロードしたいのですが、これが私のコードですが、失敗しました。

NSString *path = @"/Users/my.name/Documents/TestFour/TestFour/Library/myPic.jpg";
NSString *spath = [path stringByStandardizingPath];

[self._bgView setImage:[UIImage imageNamed:spath]];

ただし、別の関連スレッドからの Web ベースのイメージを試してみたところ、[self._bgView setImage:[[UIImage alloc] initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://farm4. static.flickr.com/3092/2915896504_a88b69c9de.jpg"]]]];

だから私は混乱しています

最初の部分に戻りますが、なぜ相対パスが機能しなかったのでしょうか? これが関連しているかどうかはわかりませんが、これと他の jpg をプロジェクトにドラッグすると、デフォルト設定 (グループなど) を選択するように求められました。この jpg をプロジェクトにドラッグする必要があるかどうかはわかりませんが、コードはドラッグの前後でどちらの方法でも機能しませんでした。

4

1 に答える 1

0

[UIImage imageNamed] は、指定された名前のファイルをアプリ バンドルから読み込みます。欲しいものは[UIImage imageWithContentsOfFile]参考)。

また、プロセスの現在の作業ディレクトリに基づいて相対ファイル パスが機能することも理解する必要があります。それが何であるか知っていますか?そうでない場合は、次のようなものを使用してログに記録できます。

char cwd[1024];
getcwd(cwd, sizeof(cwd));
NSLog(@"cwd='%s'", cwd);

(する必要があるかもしれません#import <unistd.h>)。

おそらく、それは相対パスの問題を解決するのに役立ちます。

于 2012-08-10T10:08:39.317 に答える