2011-11-01 230 views
7

我試圖將我的iOS應用程序中的一個移植到Mac OS X中,並且我正在努力尋找類似於的OS X對象。我很想獲取設備的名稱,例如「MacBookAir」。Mac OS X的UIDevice類?

編輯/ ANSWER
由於喬希卡斯威爾指出的那樣,你可以使用SCDynamicStoreCopyComputerName關鍵。

下面是代碼:

+ (NSString *)computerName { 
    return [(id)SCDynamicStoreCopyComputerName(NULL, NULL) autorelease]; 
} 
+1

對於那些想知道:#進口 levigroker

+1

對於ARC:返回CFBridgingRelease(SCDynamicStoreCopyComputerName(NULL,NULL)); – jqgsninimo

回答

5

Net Services Programming Guide說:

在Mac OS X桌面上,從調用系統配置框架SCDynamicStore函數返回的計算機名稱,以便您可以操縱它像任何其他字符串。在iOS中,您可以從類的name屬性獲取相同的信息。

似乎沒有一個叫做SCDynamicStore(doc bug)的函數,但你可能想要SCDynamicStoreCopyValue。看起來你可以使用SCDynamicStoreKeyCreateComputerName獲得你需要的密鑰。

編輯:或者,甚至更好,因爲你發現,使用SCDynamicStoreCopyComputerName功能,SCDynamicStoreCopySpecific.h發現

+0

謝謝喬希。我在我的問題中給出了代碼片段。您可以編輯您的答案以包含代碼片段,以便其他人可以參考。計算機名稱假設是一個簡單的任務,但事實證明它不是。再次感謝。 – Cyprian

+0

很高興我能幫到你。感謝您加入片段 - 我只是將其留在問題中,但我確實爲該功能添加了文檔鏈接。 –

1
NSHost *host = [NSHost currentHost]; 
NSLog(@"hostName %@",[host localizedName]); 

你可以看到Mac名

1

雨燕4.0 OSX

這正是我需要一個類似的值的UIDevice名

的iOS(SWIFT 3.2)

let deviceName = UIDevice.current.name 

OSX(SWIFT 4.0)

let deviceName = Host.current().name