0

次のコードは Xcode 4.5 で動作しました: 画像を含む ViewController では、画像の説明を含む URL からファイルが読み込まれます: ファイルの名前はローカライズされ、イタリア語または言語に応じて適切なファイルが読み込まれます。英語設定。


NSString *stringaLocalizzata = (NSString *) NSLocalizedString(@"DISCO1_PAGE",nil);
/* Localized file name that contains the object description in english or italian
/* values: 1_locale_en.txt for english
/*         1_locale.txt for italian


NSString *bioLocaleUrl =[[[@"http://" stringByAppendingString:aConstrants.disco_url]stringByAppendingString:aConstrants.doc_dir] //stringByAppendingString:stringaLocalizzata];
       stringByAppendingString:stringaLocalizzata];

NSURL *bioLocaleUrlVersion = [NSURL URLWithString: bioLocaleUrl];
NSError *error = nil;
NSString *bioLocaleWebVersion = [NSString stringWithContentsOfURL:bioLocaleUrlVersion encoding:1 error:&error];

 _bioLocale.text=bioLocaleWebVersion;

Xcode5 では動作しません。最初は内在的な問題だと思っていましたが、本当の問題は NSURL *bioLocaleUrlVersion = [NSURL URLWithString: bioLocaleUrl]; です。実行時の結果は nil です。

この方法でコードを変更すると:


NSString *bioLocaleUrl =[[[@"http://" stringByAppendingString:aConstrants.disco_url]stringByAppendingString:aConstrants.doc_dir] //stringByAppendingString:stringaLocalizzata];
       stringByAppendingString:@"1_locale_en.txt"];

*bioLocaleUrlVersion は nil ではなく、すべてが機能します。もちろん、これを別の方法で処理できますが、どちらが問題なのかを理解したいと思います。ありがとう。

4

1 に答える 1

1

NSURL無効な URL 文字列でオブジェクトを作成しようとすると、 が返されnilます。混乱したstringByAppendingString:呼び出しの中で、無効な URL 文字列が発生しています (NSURL有効と見なされるものの詳細については、クラス リファレンスの上部を参照してください。

の値がわからbioLocaleUrlないので、これ以上具体的なアドバイスはできません。

ただし、OS のより適切なルーチンを使用することを強くお勧めします。iOS 7の時点でNSURLComponents、良い賭けです:

NSURLComponents *components = [[NSURLComponents alloc] init];
components.scheme = @"http";
components.host = aConstrants.disco_url;
components.path = [aConstrants.doc_dir stringByAppendingPathComponent:stringaLocalizzata];

(質問のコードに基づいて、それは合理的だと思われます)

古い OS リリースの場合-[NSURL URLByAppendingPathComponent:]は、友達になることをお勧めします。

于 2013-10-02T11:32:44.217 に答える