2017-09-25 16 views
0

私のプログラムにNSOpenPanelを使用しようとしましたが、NSOpenpanelがメインスレッドで実行されないため、全く動作しません。それはちょうどでこれを取得するには、まったく動作しませんメインスレッドのNSOpenPanelが動作しません

[fileContents performSelectorOnMainThread:@selector(runModal) withObject:nil waitUntilDone:YES]; 

dispatch_sync(dispatch_get_main_queue(), ^{ 
//do UI stuff 
}); 

は、ここで私は以下のコードの両方を試してみました私のコード

NSString *strURL; 
NSOpenPanel *fileContents; 
NSURL *panelURL; 
NSArray *fileTypes = [NSArray arrayWithObjects:@"strings", @"STRINGS", nil]; 
fileContents = [NSOpenPanel openPanel]; 
[fileContents setCanChooseDirectories:NO]; 
[fileContents setCanChooseFiles:YES]; 
[fileContents setAllowedFileTypes:fileTypes]; 
[fileContents setAllowsMultipleSelection:NO]; 
NSInteger openPanelButton = [fileContents runModal]; 

if(openPanelButton == NSModalResponseOK) 
{ 
    panelURL = [fileContents URL]; 
    strURL = panelURL.absoluteString; 
} 

NSArray *linesReadOnly = [strURL componentsSeparatedByString:@"\n"]; 

ですメインスレッド。何が間違っていますか?

+0

Objective-Cに関する限り、NSOpenPanelのトピックについてはここで完全に説明しました。新しいことはありません。 –

答えて

0

以下のコードを確認することができます。

//Open pannel to select any file or image and send it to server with upload file API 
    let openPannel: NSOpenPanel = NSOpenPanel() 
    openPannel.allowsMultipleSelection = true 
    openPannel.canChooseFiles = true 
    openPannel.canChooseDirectories = false 
    openPannel.runModal() 

    let choosenFile = openPannel.URL 
    if choosenFile != nil 
    { 
     let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension,(choosenFile?.pathExtension!)!, 
                 nil) 
     if UTTypeConformsTo((uti?.takeRetainedValue())!, kUTTypeImage) { 
      print("This is an image!") 
     } 
     else if UTTypeConformsTo((uti?.takeRetainedValue())!, kUTTypeFolder) { 
      print("This is a folder!") 
     } 
     else if UTTypeConformsTo((uti?.takeRetainedValue())!, kUTTypeAliasFile) { 
      print("This is a zip!") 
     } 
     else if UTTypeConformsTo((uti?.takeRetainedValue())!, kUTTypeSpreadsheet) { 
      print("This is a sheet!") 
     } 
    } 
関連する問題