0

AppleサイトのReachabilityサンプルコードを使用しています。プロジェクトにReachability.hファイルとReachability.mファイルを追加しました。また、SystemConfiguration.frameworkも追加しました。ビューコントローラの.mファイルに#import"Reachability.h"を追加し、ビューコントローラの.hファイルで到達可能性変数を宣言しました。Reachabilityインスタンスの使用を開始するまで、すべてがエラーなしでコンパイルされます。

ReachableViaWiFiNetworkおよびReachableViaCarrierDataNetworkの宣言されていないエラーが発生します。

なぜこれが起こるのですか?

reachability = [Reachability reachabilityForInternetConnection];
NetworkStatus internetStatus = [reachability currentReachabilityStatus];

if ((internetStatus != ReachableViaWiFiNetwork) && (internetStatus != ReachableViaCarrierDataNetwork))
{
}
4

1 に答える 1

7

Reachability.h は、NotReachable、ReachableViaWiFi、および ReachableViaWWAN の 3 つのタイプを列挙します。

これらは、ReachableViaWiFiNetwork や ReachableViaCarrierDataNetwork ではなく、チェックしたい値です。

コンパイラが値が宣言されていないと言っている場合は、これらの値をどこから取得したかを自問する必要があります。あるべきだと思われる場所を追跡し (Reachable プレフィックスが手がかりです)、間違いを見つけます。

このエラーを追跡するのに文字通り 30 秒かかりました。自問自答し、コンパイラのメッセージを聞くことで、時間を大幅に節約できます。

また、チェックする方がクリーンで効率的です。

if (internetStatus == NotReachable) {}

また、インスタンス変数を作成せず、到達可能性を保存しません。これは変更される可能性があるためです (これはモバイルデバイス用であるため)。接続が必要になるたびに接続を確認する方が安全です。そのため、私は書く傾向がありますが、

if ([[Reachability reachabilityForInternetConnection] currentReachabilityStatus] == NotReachable) {}
于 2009-12-21T22:34:22.113 に答える