2013-10-25 2 views
1

Я много разбираюсь с Lotus Notes в своей компании. Я написал отличное приложение на C# для копирования определенных файлов в каталог Lotus Notes и из него. Теперь я хочу написать это приложение для OSX в Objective C. У меня есть несколько разных файлов, которые нужно скопировать из ~/Library/Application Support/Lotus Notes Data /.Копирование файлов в и из поддержки приложений

У меня проблемы с администрированием при запуске теста для копирования одного файла. Каков наилучший/самый простой способ (я новичок) пригласить пользователя для учетных данных администратора и выполнить код копирования файла с вновь приобретенными правами?

Я попытался реализовать класс BLAuthentication, который я нашел в Интернете, но он не будет компилироваться. В настоящее время у меня нет доступа к рабочему компьютеру для публикации кода.

ответ

0

Попробуйте, как это показано ниже: -

NSString *path=[NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES)lastObject]; 
NSString *testUrl =[path stringByAppendingPathComponent:@"/LotusNotesData/source.rtf"]; 
// 
if ([[NSFileManager defaultManager]fileExistsAtPath:testUrl]) { 
    NSLog(@"yes"); 
} 
//Below destination is folder name which should be exist on your machine or else you can create programmatically as well 
NSString *testUrl2 = @"/Users/home/Documents/destination"; 

NSLog(@"%@",testUrl); 
NSLog(@"%@",testUrl2); 
NSError *err=nil; 

//Now we are copying the souce path to destination folder with appending file name (it can be any your name becuase file manager copy source file contents to your destination file contents) 
//Here given file name is a source.rtf where you can give any your name. Also this is for copying source contents to destination contents 

NSFileManager *fm=[NSFileManager defaultManager]; 
if ([fm copyItemAtPath:testUrl toPath:[testUrl2 stringByAppendingPathComponent:@"source.rtf"] error:&err]) 
{ 
    NSLog(@"success"); 
} 
else 
{ 
    NSLog(@"%@",[err localizedDescription]); 
} 
+0

Кроме того, если хотите перечислить несколько файлов, то по этой ссылке Http://stackoverflow.com/questions/18683345/cycle-through-a-directory-and-get-paths-of-all-the-files-and-folders/18688333#18688333 –

+0

Хусейн, который отлично работал. Большое спасибо! Можете ли вы объяснить, как это можно копировать из/Library/vs CopyItemAtPath, который не работает? – Lgwells1

+0

У меня не возник вопрос? вы хотели знать, как copyItemAtPath работает правильно ??? –

0

использовать Apple Script для копирования файлов с доступом привилегий.

do shell script "cp source_path destination_path" with administrator privileges 

где исходный путь - путь к файлу, подлежащему копированию.

Вы можете вызвать скрипт Apple, добавляя «.scpt» файл с выше сценарий в вашей связке и используя код ниже:

- (void) runEmbeddedScriptFile: (NSString*)fileName 
{ 
    NSString* path = [[NSBundle bundleForClass:[self class]] pathForResource:fileName ofType:@"scpt"]; 
    NSURL* url = [NSURL fileURLWithPath:path]; 
    NSDictionary* errors = [NSDictionary dictionary]; 
    NSAppleScript* appleScript = [[NSAppleScript alloc] initWithContentsOfURL:url error:&errors]; 
    [appleScript executeAndReturnError:nil]; 
    [appleScript release]; 
} 
+0

Это вызовет запрос пользователя от пользователя. – Neha

+0

скрипт работает в редакторе сценариев, но ваш код не запускает скрипт. Сценарий –

+0

работает в редакторе сценариев, но ваш код не запускает скрипт. потому что URL изменяется см путь = /Users/priyadarshanjoshi/Library/Developer/Xcode/DerivedData/PMB-cxezmjfqztaqoyaedjsgubffmbso/Build/Products/Debug/PMB.app/Contents/Resources/CopyAppleScript.scpt и после conversin в URL is = file: ///Users/priyadarshanjoshi/Library/Developer/Xcode/DerivedData/PMB-cxezmjfqztaqoyaedjsgubffmbso/Build/Products/Debug/PMB.app/Contents/Resources/CopyAppleScript.scpt , но после выполнения файла сценария не копируется и НЕТ никаких ошибок. –

Смежные вопросы