macOS/iOS API解説

iOS , Mac アプリケーション開発のために使われる主要フレームワークの日本語情報です。2010年代に書かれた内容です。今後更新はありません。

目次

replyToOpenOrPrint:

INDEX>AppKit>NSApplication

openFiles,printFilesの結果の処理をします

Objective-C

- (void)replyToOpenOrPrint:(NSApplicationDelegateReply)reply

Swift

func replyToOpenOrPrint(_ reply: NSApplicationDelegateReply)

解説

openFiles,printFilesの結果の処理をします。
-application:openFilesapplication:printFileデリゲートメソッドから呼び出します。

ファイルのドロップにはどのようなファイルタイプならこのアプリケーションが受付することができるかを記述しておく必要があります。
ターゲット アプリケーション設定 書類のタイプ 役割Editer 拡張子"*** *" OSタイプ"*** *"を設定してある

f:id:jjj777:20150207102104p:plain

f:id:jjj777:20150207102617p:plain

返り値

Objective-C
なし

引数

Objective-C

( NSApplicationDelegateReply  )reply

Swift

_ reply: NSApplicationDelegateReply

NSApplicationDelegateReply
●NSApplicationDelegateReplySuccess
●NSApplicationDelegateReplyCancel
●NSApplicationDelegateReplyFailure

フレームワーク

ApplicationKit

クラス

NSApplication

使用可能

10.3

編集時のバージョン

10.10

参照


ファイルドロップで開かれるアプリケーションの設定 - Cocoa API解説(iOS/OS X)

-application:openFiles

application:printFile

例文

#import "AppDelegate.h"

@implementation AppDelegate
//File's ownerのデリゲートにこのクラスが接続されている
//ターゲット アプリケーション設定 書類のタイプ 役割Editer 拡張子"*** *" OSタイプ"*** *"を設定してある


- (BOOL)application:(NSApplication *)sender openFile:(NSString *)filename;{
	if (filename != nil){
		//[info setStringValue:filename];
		NSLog(@"single file");
		return YES;
	}else{
		return NO;
	}
}


#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_3
- (void)application:(NSApplication *)sender openFiles:(NSArray *)filenames;
{

    [NSApp replyToOpenOrPrint:(filenames != nil) ? NSApplicationDelegateReplySuccess : NSApplicationDelegateReplyFailure];
	
    [info setStringValue:[filenames description]];

}
#endif
@end

Swift

    //アプリケーションがファイルドロップでOpenされた
    //ターゲット アプリケーション設定 書類のタイプ 役割Editer 拡張子"*** *" OSタイプ"*** *"を設定してある
    func application(sender: NSApplication, openFiles filenames: [AnyObject]) {
        remoteStateTextField.stringValue = "File drop open"
        
        var firstMissingFile :NSString? = nil ;
        var files : NSMutableArray = NSMutableArray()
        var i : Int
        var count :Int = filenames.count
        for (i = 0 ; i < count ; ++i){
            var name : NSString = (filenames as NSArray).objectAtIndex(i) as NSString
            if (NSFileManager.defaultManager().fileExistsAtPath(name)){
                files.addObject(name)
            }else if ( firstMissingFile != nil ){
               firstMissingFile = name
            }
            
            
        }
        if ( firstMissingFile != nil ){
            var alert : NSAlert = NSAlert()
            alert.addButtonWithTitle("OK")
            
            var text :NSString
            if (files.count >= count-1){
                alert.messageText = "aaaaa"
                text = "Could not open file with"
            }else{
                alert.messageText = "Multiple files not found"
                text = "Could not open file with"
            }
            alert.informativeText = text
            alert.alertStyle = NSAlertStyle.CriticalAlertStyle
            
            alert.runModal()
            
            NSApp.replyToOpenOrPrint(NSApplicationDelegateReply.Failure)
            
        }
        
        
    }