Что вызывает ошибку NSNetServicesErrorCode = "-72000"?

Я создаю простой браузер, который может загружать локальный файл, используя UIWebview. Сначала, когда я пытаюсь просмотреть html-файл, uiwebview может загрузить исходный файл и просмотреть его. Но после того, как я свернул приложение (приложение вводило фон), а затем снова открыл приложение, я получил эту ошибку:

Error Dict: {
    NSNetServicesErrorCode = "-72000";
    NSNetServicesErrorDomain = 10;
}

и после этого, uiwebview не может загрузить исходный файл, когда я регистрирую ошибку в (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error, это показывает это сообщение:

Error Domain=NSURLErrorDomain Code=-1004 "Could not connect to the server." UserInfo=0x53d610 {NSErrorFailingURLStringKey=http://localhost:9898/local/a.html?83C66B33-874C-41A7-BBF5-78D1615512DF, NSErrorFailingURLKey=http://localhost:9898/local/a.html?83C66B33-874C-41A7-BBF5-78D1615512DF, NSLocalizedDescription=Could not connect to the server., NSUnderlyingError=0x5ccaa0 "Could not connect to the server."}

приложение не аварийно завершает работу, но индикатор вращения никогда не останавливается.

может кто-нибудь сказать мне, что является причиной этого случая? и как это решить?

Спасибо:)

2 ответа

Если вы посмотрите внутрь NSNetServices В заголовке вы увидите следующее перечисление, объясняющее каждую ошибку:

typedef NS_ENUM(NSInteger, NSNetServicesError) {

/* An unknown error occured during resolution or publication.
*/
    NSNetServicesUnknownError = -72000L,

/* An NSNetService with the same domain, type and name was already present when the publication request was made.
*/
    NSNetServicesCollisionError = -72001L,

/* The NSNetService was not found when a resolution request was made.
*/
    NSNetServicesNotFoundError  = -72002L,

/* A publication or resolution request was sent to an NSNetService instance which was already published or a search request was made of an NSNetServiceBrowser instance which was already searching.
*/
    NSNetServicesActivityInProgress = -72003L,

/* An required argument was not provided when initializing the NSNetService instance.
*/
    NSNetServicesBadArgumentError = -72004L,

/* The operation being performed by the NSNetService or NSNetServiceBrowser instance was cancelled.
*/
    NSNetServicesCancelledError = -72005L,

/* An invalid argument was provided when initializing the NSNetService instance or starting a search with an NSNetServiceBrowser instance.
*/
    NSNetServicesInvalidError = -72006L,

/* Resolution of an NSNetService instance failed because the timeout was reached.
*/
    NSNetServicesTimeoutError = -72007L,

};

Вы получаете ошибку коллизии сервиса, что означает, что сетевой сервис с тем же доменом, типом и именем уже публикует свой сервис в вашей сети.

В общем, я всегда обращаюсь к файлу заголовка за кодами ошибок. Они почти всегда присваиваются значением перечисления, а перечисление обычно имеет гораздо более описательное имя, чем используемое число.

Кажется, проблема в том, к какой машине вы пытаетесь подключиться: http://localhost:9898/local/[..]

Localhost на вашем компьютере - это ваш компьютер, localhost на вашем ipad - это ваш ipad - для тестирования используйте разрешаемое доменное имя или IP-адрес.

Комментарий Серджиу Тодираску в вопросе решил эту проблему для меня. Песочница Mac вызывала это, мне пришлось включить Сеть, в моем случае флажки Входящая и Исходящая сеть на вкладке прав. Создание ответа, чтобы его было легче увидеть.

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