initWithContentsOfURL неожиданно выдает "устаревшую" ошибку

Я только что открыл свой проект в новом XCode 4.2 в первый раз, и внезапно я получил целый ряд этих предупреждений: "initWithContentsOfURL:" устарел

Вот код - кто-нибудь знает, что здесь нужно исправить? (это отлично работало в XCode 4.0)

- (void)viewDidLoad
{

    NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"TermsConditions" withExtension:@"html"];
    NSString *myHtml = [[NSString alloc] initWithContentsOfURL:modelURL];
    [self.TermsWebView loadHTMLString:myHtml baseURL:modelURL];
    [myHtml release];
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
}

5 ответов

Решение

Вам нужно использовать метод initWithContentsOfURL:usedEncoding:error:

- (void)viewDidLoad
{ 

    NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"TermsConditions" withExtension:@"html"];

    NSStringEncoding *encoding;
    NSError *error;

    NSString *myHtml = [[NSString alloc] initWithContentsOfURL:modelURL usedEncoding:&encoding error:&error];
    [self.TermsWebView loadHTMLString:myHtml baseURL:modelURL];
    [myHtml release];
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
}

Когда вы получите сообщение о том, что данный метод устарел, проверьте информацию в документации. В этом случае вы обнаружите, что -initWithContentsOfURL: больше не отображается на странице ссылок NSString.

Другим полезным ресурсом является заголовочный файл для рассматриваемого класса. Если вы проверите NSString.h, вы найдете:

- (id)initWithContentsOfURL:(NSURL *)url DEPRECATED_IN_MAC_OS_X_VERSION_10_4_AND_LATER;

Этот метод устарел и заменен

initWithContentsOfURL:enconding: ошибка

или же

initWithContentsOfURL:usedEnconding: ошибка

ура

Попробуйте это, кажется, без ошибок

- (void)viewDidLoad

{

NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"TermsConditions" withExtension:@"html"];

NSStringEncoding *encoding = NULL;
NSError *error;

NSString *myHtml = [[NSString alloc] initWithContentsOfURL:modelURL usedEncoding:encoding error:&error];
[self.TermsWebView loadHTMLString:myHtml baseURL:modelURL];
[myHtml release];
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.

}

Кажется, это правильный код:

NSStringEncoding * encoding = NULL; NSString * jsonReturn = [[NSString alloc] initWithContentsOfURL: кодировка URL: * ошибка кодирования:NULL];

Предупреждения будут устранены только в том случае, если: 1. Вы инициализируете кодировку в NULL. 2. Поставьте * перед кодированием.

Другие вопросы по тегам