システムネットワーク設定には、いくつかのロケーション名があります。現在またはアクティブなネットワークロケーション名とすべてのネットワークロケーションのリストを取得するにはどうすればよいですか?
SystemConfiguration.frameworkはこれをサポートしていると思いますが、使用するAPIを正確に取得できませんでした。
よろしくお願いします。
よろしく
デバラガダ
2422 次
2 に答える
7
を使用SCPreferencesCreate
して設定をSCNetworkSetCopyAll
取得してから、ネットワークの場所だけを取得できます。SCNetworkSetGetName
場所の名前を取得します。
SCPreferencesRef prefs = SCPreferencesCreate(NULL, @"SystemConfiguration", NULL);
NSArray *locations = (NSArray *)SCNetworkSetCopyAll(prefs);
for (id item in locations) {
NSString *name = (NSString *)SCNetworkSetGetName((SCNetworkSetRef)item);
...
}
CFRelease(locations);
CFRelease(prefs);
詳細については、「システム構成プログラミングガイドライン」をお読みください。
于 2010-04-03T13:03:16.877 に答える
1
これは、利用可能なすべてのネットワークロケーションのリストを取得するための迅速な5.1実装です。
func getAvailabeNetworkLocation() -> [String]
{
var results = [String]()
var prefs : SCPreferences
prefs = SCPreferencesCreate (nil, "Softech" as CFString, nil)!
var sets : CFArray
sets = SCNetworkSetCopyAll (prefs)!
let count = CFArrayGetCount(sets) as Int
var newSet : SCNetworkSet? = nil
var bFound : Bool = false
for nIndex in 0..<count {
let mySet = CFArrayGetValueAtIndex (sets, nIndex)
let key = Unmanaged<SCNetworkSet>.fromOpaque(mySet!)
newSet = key.takeUnretainedValue()
let name : String = SCNetworkSetGetName(newSet!)! as String
print("Network location name: \(name)")
results.append(name)
}
return results
}
于 2021-03-23T14:03:11.983 に答える