#objective-c #xcode #xcode4
#objective-c #xcode #xcode4
Вопрос:
Я только начинаю Objective C после того, как побаловал себя Applescript, и, похоже, я не могу заставить FSMountServerVolumeSync работать. Это может показаться вопросом для начинающих, но как передать параметр из переменной в это действие?
Позвольте мне объяснить:
я хочу взять переменную с именем *username и присвоить ей значение 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);
}
Комментарии:
1. Не совсем понятно, о чем вы спрашиваете. Что вы пробовали и где у вас возникли проблемы?
Ответ №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 );
}
Понимаете, что я пока имею в виду?
Вот некоторая документация Apple по бесплатным соединительным типам.
Комментарии:
1. Когда я использую это, это не выдает никаких ошибок, но я получаю сообщения о неиспользуемых переменных… это нормально, потому что NSString не используется, а CFString используется? Или я сделал что-то не так? Спасибо за быстрый ответ!
2. Зависит от того, откуда поступают предупреждения о «неиспользуемой переменной». Следуйте своему коду, и если есть переменная, которая назначается, но на которую никогда не ссылаются, нет необходимости иметь ее в вашей функции.
3. Я ненавижу продолжать задавать вопросы, но переменными, для которых я получаю это сообщение, являются URL, имя пользователя, пароль и mountDir. Я добавляю их в строку перед запуском OSStatus FSMountServerVolumeSync. Разве они не должны использоваться?
4. Отредактируйте свой первоначальный вопрос, чтобы показать, как вы вызываете код сейчас, и я отредактирую свой ответ, чтобы избавиться от ваших предупреждений.
5. и я обновил свой ответ. Вы объявляли переменные внутри самого вызова FSMountServerVolumeSync. Если вы используете мои изменения, вы будете правильно выполнять кастинг. Я надеюсь, что это поможет!