Проверка интернет-соединение в Objective C

Ну, эта проблема связана с тем, что вы используете зарезервированные слова SQL, такие как таблица user.

Вы можете посмотреть зарезервированные слова SQL для Derby , и у вас есть две опции

  1. Переименовать user таблицу в user_account или имя таблицы, которую вы хочет.

    @Table(name = "user_account")
    public class User { ... }
    
  2. Принудительно использовать user имя таблицы.

    @Table(name = "\"user\"")
    public class User { ... }
    

15
задан woz 19 July 2012 в 17:27
поделиться

5 ответов

Смотрите на пример кода Apple. Проект Достижимости показывает, как обнаружить соединение.

http://developer.apple.com/iphone/library/samplecode/Reachability/index.html

30
ответ дан 30 November 2019 в 23:57
поделиться

Необходимо будет читать в кодах ошибок и ответить как лучше всего, Вы можете. У меня был некоторый опыт с этим по существу, он может зависеть, на каком сервисе Вы взаимодействуете с, но с delicious.com я получаю ошибку-1012 для плохого user/passwd, который, если Вы ищете его, является

NSURLErrorUserCancelledAuthentication =     -1012,

, хотя ясно, что формулировка вводит в заблуждение, хотя я могу последовательно копировать включение плохого user/passwd и получение того кода ошибки. Технически iPhone никогда не не подключается к Интернету, если Вы не находитесь в некотором странном регионе, который имеет проблемы с передачей данных. Я вижу также существует код ошибки

NSURLErrorNotConnectedToInternet =      -1009,

, я прошел бы NSURLError.h (и там больше похожи на это)

NSURLErrorUnsupportedURL =          -1002,
NSURLErrorCannotFindHost =          -1003,
NSURLErrorCannotConnectToHost =         -1004,
NSURLErrorNetworkConnectionLost =       -1005,

и т.д.

все, что необходимо сделать, добираются, ссылка на NSError возражают, что Вы передали в & проверьте, что это - код ошибки как так

//NSError *returnedError

if([returnedError code] == kERROR_CODE_BAD_USERNAME_OR_PASSWORD)

, константа - что-то, что я определил в своем собственном исходном коде, который является по существу-1012

9
ответ дан 30 November 2019 в 23:57
поделиться

это работает на меня и взято от яблока сейсмический xml проект:

- (BOOL)isDataSourceAvailable
{
    static BOOL checkNetwork = YES;
    if (checkNetwork) { // Since checking the reachability of a host can be expensive, cache the result and perform the reachability check once.
        checkNetwork = NO;

        Boolean success;    
        const char *host_name = "twitter.com"; // your data source host name

        SCNetworkReachabilityRef reachability = SCNetworkReachabilityCreateWithName(NULL, host_name);
        SCNetworkReachabilityFlags flags;
        success = SCNetworkReachabilityGetFlags(reachability, &flags);
        _isDataSourceAvailable = success && (flags & kSCNetworkFlagsReachable) && !(flags & kSCNetworkFlagsConnectionRequired);
        CFRelease(reachability);
    }
    return _isDataSourceAvailable;
}
8
ответ дан 30 November 2019 в 23:57
поделиться

Каков Ваш текущий код соединения, похожи? Если Вы используете NSURLConnection +sendSynchronousRequest:returningResponse:error:, то просто необходимо передать адрес переменной NSError и проверить это после этого; с connectionWithRequest:delegate:, необходимо реализовать -connection:didFailWithError: в делегате.

2
ответ дан 30 November 2019 в 23:57
поделиться

That code works, but doesn't always create the desired result.

The way that the TCP stack on the iPhone works is very different from what should be expected. With the "Reachability" code, sometimes a network connection will be present, but will not be reliably detected. However, launching MobileSafari then reattempting to check connectivity with "Reachability" code will result in the correct result.

The way that I have found most effective in determining network connectivity is to run a NSURLConnection check when the application loads, in a separate thread. Make a call to a URL that you know will return something like "Yes" (i.e. HTML file on your server or something). Then check to be sure the returned result is equal to the static text. That way, you know that the NSURLConnection stack is reaching out properly, as opposed to the "Reachability" code that does not quite work consistently.

9
ответ дан 30 November 2019 в 23:57
поделиться