【问题标题】:FSMountServerVolumeSync parameter objective cFSMountServerVolumeSync 参数目标 c
【发布时间】:2011-11-08 04:47:57
【问题描述】:

在使用 Applescript 后,我​​才刚刚开始使用 Objective C,但我似乎无法让 FSMountServerVolumeSync 工作。这似乎是一个完全初学者的问题,但是如何将参数从变量传递到此操作

让我解释一下:
我想在此操作中获取一个名为 *username 的变量并将其设置为用户名。我也想对 *url 和 url 这样做。从绝对初学者的角度来看,有人可以向我展示如何设置它的示例吗? 我目前正在阅读教程等,但即使我不完全理解我在做什么,我也想完成这部分代码。 ;)
提前致谢!

[编辑] 这是我目前所得到的:

- (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);


} 

【问题讨论】:

  • 不清楚你在问什么。您尝试了哪些方法,您在哪里遇到问题?

标签: objective-c xcode xcode4


【解决方案1】:

这些根本不是愚蠢的问题。

请记住,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 免费桥接类型。

【讨论】:

  • 当我使用它时,它不会给出任何错误,但我确实收到了未使用的变量消息......这是否正常,因为没有使用 NSString 但 CFString 是?还是我做错了什么?感谢您的快速回复!
  • 取决于“未使用变量”警告的来源。遵循您的代码,如果有一个变量被分配但从未被引用,则不需要在您的函数中包含它。
  • 我讨厌一直问问题,但我收到此消息的变量是 url、用户名、密码和 mountDir。在运行 OSStatus FSMountServerVolumeSync 之前,我将它们放入队列中。不应该使用它们吗?
  • 编辑您的原始问题以显示您现在如何调用代码,我将编辑我的答案以消除您的警告。
  • 我更新了我的答案。您在 FSMountServerVolumeSync 调用本身中声明变量。如果您使用我的更改,您将正确投射。我希望这会有所帮助!
猜你喜欢
  • 1970-01-01
  • 2023-03-28
  • 1970-01-01
  • 1970-01-01
  • 2011-07-12
  • 1970-01-01
  • 1970-01-01
  • 2017-03-30
  • 2014-07-29
相关资源
最近更新 更多