2011-11-08 31 views
1

我剛剛開始使用Applescript之後就開始使用Objective C,並且我似乎無法使FSMountServerVolumeSync正常工作。這看起來像是一個完全初學者的問題,但如何將參數從一個變量傳遞給此動作

讓我解釋一下:
我想在此操作中使用名爲*的用戶名並將其設置爲用戶名。我也想這樣做*網址和網址。從絕對的初學者的角度來看,有沒有什麼方法可以讓我看看如何設置這個樣本? 我目前正在閱讀教程等,但我想要完成這部分代碼,即使我不完全明白我在做什麼。 ;)
在此先感謝!

[編輯]這裏是我到目前爲止有:FSMountServerVolumeSync參數目標c

- (IBAction)signin:(id)sender{ 

NSString * user = @"myusername"; 
NSString * password = @"mypassword"; 
NSURL * url = [NSURL URLWithString: @"smb://123.456.789.0"]; 
NSURL * mountDir = [NSURL URLWithString: @"/Students"]; 

OSStatus FSMountServerVolumeSync (
            CFURLRef url, 
            CFURLRef mountDir, 
            CFStringRef user, 
            CFStringRef password, 
            FSVolumeRefNum *null, 
            OptionBits flags); 


} 
+0

目前還不清楚你在問什麼。你有什麼嘗試,你在哪裏有問題? –

回答

2

這是不是在所有愚蠢的問題。

請記住CFStringRef和CFURLRef是免費橋接,這意味着Objective C等價物是NSString和NSURL。所有你需要做的就是投射。

- (IBAction)signin:(id)sender{ 

    NSString * user = @"myusername"; 
    NSString * password = @"mypassword"; 
    NSURL * url = [NSURL URLWithString: @"smb://123.456.789.0"]; 
    NSURL * mountDir = [NSURL URLWithString: @"/Students"]; 
    OptionBits flags = 0; 
    OSStatus err = FSMountServerVolumeSync (
             (CFURLRef) url, 
             (CFURLRef) mountDir, 
             (CFStringRef) user, 
             (CFStringRef) password, 
             NULL, 
             flags); 

    if(err != noErr) 
     NSLog(@"some kind of error in FSMountServerVolumeSync - %ld", err); 
} 

看看我的意思到目前爲止?

Here is some Apple documentation關於免費橋接類型。

+0

當我使用這個,它不會給出任何錯誤,但我得到未使用的變量消息...這是正常的,因爲NSString沒有被使用,但CFString是?還是我做錯了什麼?感謝您的快速回復! – ethangillius

+0

取決於「未使用的變量」警告來自何處。按照你的代碼,如果有一個正在分配但從未被引用的變量,則不需要在你的函數中使用它。 –

+0

我討厭繼續提問,但我收到此消息的變量是url,用戶名,密碼和mountDir。在我運行OSStatus FSMountServerVolumeSync之前,我正在將它們轉換成行。不應該使用它們嗎? – ethangillius