NSFileManager enumeratorAtURL

NSDirectoryEnumerator まとめ

enumeratorAtURL等DirectoryEnumeratorを使用して収集したURLやパスの処理



第一階層のみ収集する場合は contentsOfDirectoryAtURL
下層まで再帰的に収集する場合は enumeratorAtURL


基本的には処理方法は2種類
大量のファイルを処理する場合:nextObjectを使う
少量のファイルを処理する場合:allObjectsを使う

だいたい今のデバイスの基本性能なら
enumeratorAtURLで収集されるURLの想定が1000を超えるようなら
nextObjectを利用したほうが良いとされている



カテゴリー
AppleScript NSFileManager enumeratorAtURL
https://quicktimer.cocolog-nifty.com/icefloe/cat76058234/index.html

大量のファイルを処理する場合:nextObjectを使う
[NSDirectoryEnumerator]enumeratorAtURLで収集したURL  nextObject 同じフォルダ名の項目をリストにする
https://quicktimer.cocolog-nifty.com/icefloe/2024/05/post-c1704f.html

少量のファイルを処理する場合:allObjectsを使う
[NSDirectoryEnumerator]enumeratorAtURLで収集したURL allObjects 同じフォルダ名の項目をリストにする
https://quicktimer.cocolog-nifty.com/icefloe/2024/05/post-a0e375.html

|

[NSDirectoryEnumerator]enumeratorAtURLで収集したURL allObjects 同じフォルダ名の項目をリストにする


AppleScript サンプルコード

【スクリプトエディタで開く】 |

AppleScript サンプルソース(参考)
行番号ソース
001#!/usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003#
004# ループ処理にallObjectsを利用
005#com.cocolog-nifty.quicktimer.icefloe
006----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
007##自分環境がos12なので2.8にしているだけです
008use AppleScript version "2.8"
009use framework "Foundation"
010use framework "AppKit"
011use scripting additions
012
013
014property refMe : a reference to current application
015
016
017#############################
018###ダイアログを前面に出す
019set strName to (name of current application) as text
020if strName is "osascript" then
021  tell application "Finder" to activate
022else
023  tell current application to activate
024end if
025############
026set appFileManager to refMe's NSFileManager's defaultManager()
027set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSDesktopDirectory) inDomains:(refMe's NSUserDomainMask))
028set ocidDesktopDirPathURL to ocidURLsArray's firstObject()
029set aliasDefaultLocation to (ocidDesktopDirPathURL's absoluteURL()) as alias
030############
031set strMes to "フォルダを選んでください" as text
032set strPrompt to "フォルダを選択してください" as text
033try
034  set aliasDirPath to (choose folder strMes with prompt strPrompt default location aliasDefaultLocation without multiple selections allowed, invisibles and showing package contents) as alias
035on error
036  log "エラーしました"
037  return "エラーしました"
038end try
039############
040#パス
041set strDirPath to (POSIX path of aliasDirPath) as text
042set ocidDirPathStr to refMe's NSString's stringWithString:(strDirPath)
043set ocidDirPath to ocidDirPathStr's stringByStandardizingPath()
044set ocidDirPathURL to (refMe's NSURL's alloc()'s initFileURLWithPath:(ocidDirPath) isDirectory:true)
045############
046#コンテンツの収集
047#プロパティ
048set ocidPropertiesArray to refMe's NSMutableArray's alloc()'s initWithCapacity:(0)
049ocidPropertiesArray's addObject:(refMe's NSURLIsDirectoryKey)
050ocidPropertiesArray's addObject:(refMe's NSURLNameKey)
051ocidPropertiesArray's addObject:(refMe's NSURLPathKey)
052#オプション
053set ocidOption to (refMe's NSDirectoryEnumerationSkipsHiddenFiles)
054#収集
055set ocidEmuDict to appFileManager's enumeratorAtURL:(ocidDirPathURL) includingPropertiesForKeys:(ocidPropertiesArray) options:(ocidOption) errorHandler:(reference)
056
057#出力用の空の可変リスト
058set ocidDirPathURLAllArray to refMe's NSMutableArray's alloc()'s initWithCapacity:(0)
059############
060##allObjectsでループする方法
061set ocidEmuFileURLArray to ocidEmuDict's allObjects()
062repeat with itemURL in ocidEmuFileURLArray
063  #判定して(このケースはディレクトリなら)
064  set listResponse to (itemURL's getResourceValue:(reference) forKey:(refMe's NSURLIsDirectoryKey) |error| :(reference))
065  # listResponseは{boolean,VALUE,NSERROR}のリスト形式
066  if (item 1 of listResponse) is (true) then
067    set boolIsDir to (item 2 of listResponse) as boolean
068    if boolIsDir is true then
069      #出力用のリストに追加していく
070      (ocidDirPathURLAllArray's addObject:(itemURL))
071    end if
072  else if (item 1 of listResponse) is (false) then
073    log (item 3 of listResponse)'s code() as text
074    log (item 3 of listResponse)'s localizedDescription() as text
075  end if
076end repeat
077############
078set ocidSortedArrayM to refMe's NSMutableArray's alloc()'s initWithCapacity:(0)
079#ソート
080set ocidDescriptor to refMe's NSSortDescriptor's sortDescriptorWithKey:("lastPathComponent") ascending:(yes) selector:("localizedStandardCompare:")
081set ocidDescriptorArray to refMe's NSArray's arrayWithObject:(ocidDescriptor)
082set ocidSortedArray to ocidDirPathURLAllArray's sortedArrayUsingDescriptors:(ocidDescriptorArray)
083ocidSortedArrayM's addObjectsFromArray:(ocidSortedArray)
084############
085#重複行を残す
086set numCntArray to (ocidSortedArray's |count|()) as integer
087if numCntArray <= 3 then
088return "比較するほど項目がありません"
089end if
090#
091set numCntIndex to (numCntArray - 1) as integer
092repeat
093  #後方
094  set ocidURLA to (ocidSortedArrayM's objectAtIndex:(numCntIndex))
095  set strFileNameA to ocidURLA's lastPathComponent() as text
096  #前方
097  set ocidURLB to (ocidSortedArrayM's objectAtIndex:(numCntIndex - 1))
098  set strFileNameB to ocidURLB's lastPathComponent() as text
099  #比較
100  if strFileNameA is strFileNameB then
101    #同じなら比較を一つ飛ばす
102    set numCntIndex to numCntIndex - 1 as integer
103  else if strFileNameA is not strFileNameB then
104    #フォルダ名が違うなら後方を削除
105    (ocidSortedArrayM's removeObjectAtIndex:(numCntIndex))
106  end if
107  set numCntIndex to numCntIndex - 1 as integer
108  if numCntIndex = 1 then
109    exit repeat
110  end if
111  
112end repeat
113############
114#パスのリストにして
115set ocidOutPutArray to refMe's NSMutableArray's alloc()'s initWithCapacity:(0)
116repeat with itemURL in ocidSortedArrayM
117  set strDirPath to itemURL's |path|() as text
118  (ocidOutPutArray's addObject:(strDirPath))
119end repeat
120
121
122############
123#改行テキストに
124set ocidJoinText to ocidOutPutArray's componentsJoinedByString:("€n")
125#保存先
126set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSDesktopDirectory) inDomains:(refMe's NSUserDomainMask))
127set ocidDesktopDirPathURL to ocidURLsArray's firstObject()
128set ocidSaveFilePathURL to ocidDesktopDirPathURL's URLByAppendingPathComponent:("同名フォルダリスト.txt")
129#保存
130set listDone to ocidJoinText's writeToURL:(ocidSaveFilePathURL) atomically:(true) encoding:(refMe's NSUTF8StringEncoding) |error| :(reference)
131
132if (item 1 of listDone) is true then
133  log "正常処理"
134else if (item 2 of listDone) ≠ (missing value) then
135  log (item 2 of listDone)'s code() as text
136  log (item 2 of listDone)'s localizedDescription() as text
137  return "エラーしました"
138end if
AppleScriptで生成しました

|

[NSDirectoryEnumerator]enumeratorAtURLで収集したURL  nextObject 同じフォルダ名の項目をリストにする


あくまでも参考にしてください

【スクリプトエディタで開く】 |

サンプルソース(参考)
行番号ソース
001#! /usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003#
004# ループ処理にnextObjectを利用
005#com.cocolog-nifty.quicktimer.icefloe
006----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
007##自分環境がos12なので2.8にしているだけです
008use AppleScript version "2.8"
009use framework "Foundation"
010use framework "AppKit"
011use scripting additions
012
013
014property refMe : a reference to current application
015
016
017#############################
018###ダイアログを前面に出す
019set strName to (name of current application) as text
020if strName is "osascript" then
021  tell application "Finder" to activate
022else
023  tell current application to activate
024end if
025############
026set appFileManager to refMe's NSFileManager's defaultManager()
027set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSDesktopDirectory) inDomains:(refMe's NSUserDomainMask))
028set ocidDesktopDirPathURL to ocidURLsArray's firstObject()
029set aliasDefaultLocation to (ocidDesktopDirPathURL's absoluteURL()) as alias
030############
031set strMes to "フォルダを選んでください" as text
032set strPrompt to "フォルダを選択してください" as text
033try
034  set aliasDirPath to (choose folder strMes with prompt strPrompt default location aliasDefaultLocation without multiple selections allowed, invisibles and showing package contents) as alias
035on error
036  log "エラーしました"
037  return "エラーしました"
038end try
039############
040#パス
041set strDirPath to (POSIX path of aliasDirPath) as text
042set ocidDirPathStr to refMe's NSString's stringWithString:(strDirPath)
043set ocidDirPath to ocidDirPathStr's stringByStandardizingPath()
044set ocidDirPathURL to (refMe's NSURL's alloc()'s initFileURLWithPath:(ocidDirPath) isDirectory:true)
045############
046#コンテンツの収集
047#プロパティ
048set ocidPropertiesArray to refMe's NSMutableArray's alloc()'s initWithCapacity:(0)
049ocidPropertiesArray's addObject:(refMe's NSURLIsDirectoryKey)
050ocidPropertiesArray's addObject:(refMe's NSURLNameKey)
051ocidPropertiesArray's addObject:(refMe's NSURLPathKey)
052#オプション
053set ocidOption to (refMe's NSDirectoryEnumerationSkipsHiddenFiles)
054#収集
055set ocidEmuDict to appFileManager's enumeratorAtURL:(ocidDirPathURL) includingPropertiesForKeys:(ocidPropertiesArray) options:(ocidOption) errorHandler:(reference)
056##nextObjectてループする方法
057#出力用の空の可変リスト
058set ocidDirPathURLAllArray to refMe's NSMutableArray's alloc()'s initWithCapacity:(0)
059repeat
060  #次へ
061  set ocidEnuURL to ocidEmuDict's nextObject()
062  #空になったらループ終了
063  if ocidEnuURL = (missing value) then
064    exit repeat
065  else
066    #判定して(このケースはディレクトリなら)
067    set listResponse to (ocidEnuURL's getResourceValue:(reference) forKey:(refMe's NSURLIsDirectoryKey) |error| :(reference))
068    # listResponseは{boolean,VALUE,NSERROR}のリスト形式
069    if (item 1 of listResponse) is (true) then
070      set boolIsDir to (item 2 of listResponse) as boolean
071      if boolIsDir is true then
072        #出力用のリストに追加していく
073        ocidDirPathURLAllArray's addObject:(ocidEnuURL)
074      end if
075    else if (item 1 of listResponse) is (false) then
076      log (item 3 of listResponse)'s code() as text
077      log (item 3 of listResponse)'s localizedDescription() as text
078    end if
079  end if
080end repeat
081############
082set ocidSortedArrayM to refMe's NSMutableArray's alloc()'s initWithCapacity:(0)
083#ソート
084set ocidDescriptor to refMe's NSSortDescriptor's sortDescriptorWithKey:("lastPathComponent") ascending:(yes) selector:("localizedStandardCompare:")
085set ocidDescriptorArray to refMe's NSArray's arrayWithObject:(ocidDescriptor)
086set ocidSortedArray to ocidDirPathURLAllArray's sortedArrayUsingDescriptors:(ocidDescriptorArray)
087ocidSortedArrayM's addObjectsFromArray:(ocidSortedArray)
088############
089#重複行を残す
090set numCntArray to (ocidSortedArray's |count|()) as integer
091if numCntArray ≤ 3 then
092  return "比較するほど項目がありません"
093end if
094#
095set numCntIndex to (numCntArray - 1) as integer
096repeat
097  #後方
098  set ocidURLA to (ocidSortedArrayM's objectAtIndex:(numCntIndex))
099  set strFileNameA to ocidURLA's lastPathComponent() as text
100  #前方
101  set ocidURLB to (ocidSortedArrayM's objectAtIndex:(numCntIndex - 1))
102  set strFileNameB to ocidURLB's lastPathComponent() as text
103  #比較
104  if strFileNameA is strFileNameB then
105    #同じなら比較を一つ飛ばす
106    set numCntIndex to numCntIndex - 1 as integer
107  else if strFileNameA is not strFileNameB then
108    #フォルダ名が違うなら後方を削除
109    (ocidSortedArrayM's removeObjectAtIndex:(numCntIndex))
110  end if
111  set numCntIndex to numCntIndex - 1 as integer
112  if numCntIndex = 1 then
113    exit repeat
114  end if
115  
116end repeat
117############
118#パスのリストにして
119set ocidOutPutArray to refMe's NSMutableArray's alloc()'s initWithCapacity:(0)
120repeat with itemURL in ocidSortedArrayM
121  set strDirPath to itemURL's |path|() as text
122  (ocidOutPutArray's addObject:(strDirPath))
123end repeat
124
125
126############
127#改行テキストに
128set ocidJoinText to ocidOutPutArray's componentsJoinedByString:("\n")
129#保存先
130set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSDesktopDirectory) inDomains:(refMe's NSUserDomainMask))
131set ocidDesktopDirPathURL to ocidURLsArray's firstObject()
132set ocidSaveFilePathURL to ocidDesktopDirPathURL's URLByAppendingPathComponent:("同名フォルダリスト.txt")
133#保存
134set listDone to ocidJoinText's writeToURL:(ocidSaveFilePathURL) atomically:(true) encoding:(refMe's NSUTF8StringEncoding) |error| :(reference)
135
136if (item 1 of listDone) is true then
137  log "正常処理"
138else if (item 2 of listDone) ≠ (missing value) then
139  log (item 2 of listDone)'s code() as text
140  log (item 2 of listDone)'s localizedDescription() as text
141  return "エラーしました"
142end if
AppleScriptで生成しました

|

[NSDirectoryEnumerator]enumeratorAtURLで収集したURL nextObjectでループする


あくまでも参考にしてください

【スクリプトエディタで開く】 |

サンプルソース(参考)
行番号ソース
001#! /usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003#
004#com.cocolog-nifty.quicktimer.icefloe
005----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
006##自分環境がos12なので2.8にしているだけです
007use AppleScript version "2.8"
008use framework "Foundation"
009use framework "AppKit"
010use scripting additions
011
012
013property refMe : a reference to current application
014
015
016#############################
017###ダイアログを前面に出す
018set strName to (name of current application) as text
019if strName is "osascript" then
020  tell application "Finder" to activate
021else
022  tell current application to activate
023end if
024############
025set appFileManager to refMe's NSFileManager's defaultManager()
026set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSDesktopDirectory) inDomains:(refMe's NSUserDomainMask))
027set ocidDesktopDirPathURL to ocidURLsArray's firstObject()
028set aliasDefaultLocation to (ocidDesktopDirPathURL's absoluteURL()) as alias
029############
030set strMes to "フォルダを選んでください" as text
031set strPrompt to "フォルダを選択してください" as text
032try
033  set aliasDirPath to (choose folder strMes with prompt strPrompt default location aliasDefaultLocation without multiple selections allowed, invisibles and showing package contents) as alias
034on error
035  log "エラーしました"
036  return "エラーしました"
037end try
038############
039#パス
040set strDirPath to (POSIX path of aliasDirPath) as text
041set ocidDirPathStr to refMe's NSString's stringWithString:(strDirPath)
042set ocidDirPath to ocidDirPathStr's stringByStandardizingPath()
043set ocidDirPathURL to (refMe's NSURL's alloc()'s initFileURLWithPath:(ocidDirPath) isDirectory:true)
044############
045#コンテンツの収集
046#プロパティ
047set ocidPropertiesArray to refMe's NSMutableArray's alloc()'s initWithCapacity:(0)
048ocidPropertiesArray's addObject:(refMe's NSURLIsDirectoryKey)
049ocidPropertiesArray's addObject:(refMe's NSURLNameKey)
050ocidPropertiesArray's addObject:(refMe's NSURLPathKey)
051#オプション
052set ocidOption to (refMe's NSDirectoryEnumerationSkipsHiddenFiles)
053#収集
054set ocidEmuDict to appFileManager's enumeratorAtURL:(ocidDirPathURL) includingPropertiesForKeys:(ocidPropertiesArray) options:(ocidOption) errorHandler:(reference)
055##nextObjectてループする方法
056#出力用の空の可変リスト
057set ocidDirPathURLAllArray to refMe's NSMutableArray's alloc()'s initWithCapacity:(0)
058repeat
059  #次へ
060  set ocidEnuURL to ocidEmuDict's nextObject()
061  #空になったらループ終了
062  if ocidEnuURL = (missing value) then
063    exit repeat
064  else
065    #判定して(このケースはディレクトリなら)
066    set listResponse to (ocidEnuURL's getResourceValue:(reference) forKey:(refMe's NSURLIsDirectoryKey) |error| :(reference))
067    # listResponseは{boolean,VALUE,NSERROR}のリスト形式
068    if (item 1 of listResponse) is (true) then
069      set boolIsDir to (item 2 of listResponse) as boolean
070      if boolIsDir is true then
071        #出力用のリストに追加していく
072        ocidDirPathURLAllArray's addObject:(ocidEnuURL)
073      end if
074    else if (item 1 of listResponse) is (false) then
075      log (item 3 of listResponse)'s code() as text
076      log (item 3 of listResponse)'s localizedDescription() as text
077    end if
078  end if
079end repeat
080log ocidDirPathURLAllArray as list
081
082
083return
AppleScriptで生成しました

|

[NSDirectoryEnumerator]enumeratorAtURLで収集したURL allObjectsでループする


あくまでも参考にしてください

【スクリプトエディタで開く】 |

サンプルソース(参考)
行番号ソース
001#! /usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003#
004#com.cocolog-nifty.quicktimer.icefloe
005----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
006##自分環境がos12なので2.8にしているだけです
007use AppleScript version "2.8"
008use framework "Foundation"
009use framework "AppKit"
010use scripting additions
011
012property refMe : a reference to current application
013
014#############################
015###ダイアログを前面に出す
016set strName to (name of current application) as text
017if strName is "osascript" then
018  tell application "Finder" to activate
019else
020  tell current application to activate
021end if
022############
023set appFileManager to refMe's NSFileManager's defaultManager()
024set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSDesktopDirectory) inDomains:(refMe's NSUserDomainMask))
025set ocidDesktopDirPathURL to ocidURLsArray's firstObject()
026set aliasDefaultLocation to (ocidDesktopDirPathURL's absoluteURL()) as alias
027############
028set strMes to "フォルダを選んでください" as text
029set strPrompt to "フォルダを選択してください" as text
030try
031  set aliasDirPath to (choose folder strMes with prompt strPrompt default location aliasDefaultLocation without multiple selections allowed, invisibles and showing package contents) as alias
032on error
033  log "エラーしました"
034  return "エラーしました"
035end try
036############
037#パス
038set strDirPath to (POSIX path of aliasDirPath) as text
039set ocidDirPathStr to refMe's NSString's stringWithString:(strDirPath)
040set ocidDirPath to ocidDirPathStr's stringByStandardizingPath()
041set ocidDirPathURL to (refMe's NSURL's alloc()'s initFileURLWithPath:(ocidDirPath) isDirectory:true)
042############
043#コンテンツの収集
044#プロパティ
045set ocidPropertiesArray to refMe's NSMutableArray's alloc()'s initWithCapacity:(0)
046ocidPropertiesArray's addObject:(refMe's NSURLIsDirectoryKey)
047ocidPropertiesArray's addObject:(refMe's NSURLNameKey)
048ocidPropertiesArray's addObject:(refMe's NSURLPathKey)
049#オプション
050set ocidOption to (refMe's NSDirectoryEnumerationSkipsHiddenFiles)
051#収集
052set ocidEmuDict to appFileManager's enumeratorAtURL:(ocidDirPathURL) includingPropertiesForKeys:(ocidPropertiesArray) options:(ocidOption) errorHandler:(reference)
053
054#出力用の空の可変リスト
055set ocidDirPathURLAllArray to refMe's NSMutableArray's alloc()'s initWithCapacity:(0)
056##allObjectsでループする方法
057set ocidEmuFileURLArray to ocidEmuDict's allObjects()
058repeat with itemURL in ocidEmuFileURLArray
059  #判定して(このケースはディレクトリなら)
060  set listResponse to (itemURL's getResourceValue:(reference) forKey:(refMe's NSURLIsDirectoryKey) |error| :(reference))
061  # listResponseは{boolean,VALUE,NSERROR}のリスト形式
062  if (item 1 of listResponse) is (true) then
063    set boolIsDir to (item 2 of listResponse) as boolean
064    if boolIsDir is true then
065      #出力用のリストに追加していく
066      (ocidDirPathURLAllArray's addObject:(ocidEnuURL))
067    end if
068  else if (item 1 of listResponse) is (false) then
069    log (item 3 of listResponse)'s code() as text
070    log (item 3 of listResponse)'s localizedDescription() as text
071  end if
072end repeat
073
074log ocidDirPathURLAllArray as list
075
076return
AppleScriptで生成しました

|

その他のカテゴリー

Accessibility Acrobat Acrobat 2020 Acrobat AddOn Acrobat Annotation Acrobat ARMDC Acrobat AV2 Acrobat BookMark Acrobat Classic Acrobat DC Acrobat Dialog Acrobat Distiller Acrobat Form Acrobat JS Acrobat Manifest Acrobat Menu Acrobat Open Acrobat Plugin Acrobat Preferences Acrobat Preflight Acrobat python Acrobat Reader Acrobat SCA Acrobat SCA Updater Acrobat Sequ Acrobat Sign Acrobat Stamps Acrobat Watermark Acrobat Windows Acrobat Windows Reader Admin Admin Account Admin Apachectl Admin configCode Admin Device Management Admin LaunchServices Admin Locationd Admin loginitem Admin Maintenance Admin Mobileconfig Admin Permission Admin Pkg Admin Power Management Admin Printer Admin SetUp Admin SMB Admin Support Admin System Information Admin Tools Admin Users Admin Volumes Adobe Adobe FDKO Adobe RemoteUpdateManager AppKit Apple AppleScript AppleScript do shell script AppleScript List AppleScript ObjC AppleScript Osax AppleScript PDF AppleScript Pictures AppleScript record AppleScript Script Editor AppleScript Script Menu AppleScript Shortcuts AppleScript Shortcuts Events AppleScript System Events AppleScript System Events Plist AppleScript Video Applications AppStore Archive Attributes Automator BackUp Barcode Barcode QR Barcode QR Decode Bash Basic Basic Path Bluetooth BOX Browser Calendar CD/DVD Choose Chrome CIImage CityCode CloudStorage Color com.apple.LaunchServices.OpenWith Console Contacts CotEditor CURL current application Date&Time delimiters Desktop Device Diff Disk Dock DropBox Droplet eMail Encode % Encode Decode Encode UTF8 Error EXIFData ffmpeg File Finder Firefox Folder FolderAction Fonts GIF github Guide HTML HTML Entity Icon Illustrator Image Events Image2PDF ImageOptim iPhone iWork Javascript Jedit Json Label Leading Zero List locationd LRC lsappinfo LSSharedFileList m3u8 Mail MakePDF Map Math Media Media AVAsset Media AVconvert Media AVFoundation Media AVURLAsset Media Movie Media Music Memo Messages Microsoft Microsoft Edge Microsoft Excel Mouse Music NetWork Notes NSArray NSArray Sort NSBezierPath NSBitmapImageRep NSBundle NSCFBoolean NSCharacterSet NSColor NSColorList NSData NSDecimalNumber NSDictionary NSError NSEvent NSFileAttributes NSFileManager NSFileManager enumeratorAtURL NSFont NSFontManager NSGraphicsContext NSImage NSIndex NSKeyedArchiver NSKeyedUnarchiver NSLocale NSMutableArray NSMutableDictionary NSMutableString NSNotFound NSNumber NSOpenPanel NSPasteboard NSpoint NSPredicate NSPrintOperation NSRange NSRect NSRegularExpression NSRunningApplication NSScreen NSSize NSString NSString stringByApplyingTransform NSStringCompareOptions NSTask NSTimeZone NSURL NSURL File NSURLBookmark NSURLComponents NSURLResourceKey NSURLSession NSUserDefaults NSUUID NSView NSWorkspace Numbers OAuth OneDrive PDF PDFAnnotation PDFAnnotationWidget PDFContext PDFDisplayBox PDFDocumentPermissions PDFImageRep PDFKit PDFnUP PDFOutline perl Photoshop PlistBuddy pluginkit postalcode PostScript prefPane Preview Python QuickLook QuickTime ReadMe Regular Expression Reminders ReName Repeat RTF Safari SaveFile ScreenCapture ScreenSaver SF Symbols character id SF Symbols Entity sips Skype Slack Sound Spotlight sqlite SRT StandardAdditions Swift System Settings TCC TemporaryItems Terminal Text Text CSV Text MD Text TSV TextEdit Tools Translate Trash Twitter Typography UI Unit Conversion UTType valueForKeyPath Video VisionKit Visual Studio Code VMware Fusion Wacom webarchive webp Wifi Windows XML XML EPUB XML OPML XML Plist XML RSS XML savedSearch XML SVG XML TTML XML webloc XML XMP YouTube zoom