@@ -257,3 +257,59 @@ extension UIAlertController {
257257 self . addAction ( UIAlertAction ( title: " Cancel " . localized, style: . cancel, handler: nil ) )
258258 }
259259}
260+
261+ extension UIApplication {
262+ /// The top most view controller
263+ static var topMostViewController : UIViewController ? {
264+ return UIApplication . shared. keyWindow? . rootViewController? . visibleViewController
265+ }
266+ }
267+
268+ extension UIViewController {
269+ /// The visible view controller from a given view controller
270+ var visibleViewController : UIViewController ? {
271+ if let navigationController = self as? UINavigationController {
272+ return navigationController. topViewController? . visibleViewController
273+ } else if let tabBarController = self as? UITabBarController {
274+ return tabBarController. selectedViewController? . visibleViewController
275+ } else if let presentedViewController = presentedViewController {
276+ return presentedViewController. visibleViewController
277+ } else {
278+ return self
279+ }
280+ }
281+ }
282+
283+ extension OutputStream {
284+
285+ /// Write `String` to `OutputStream`
286+ ///
287+ /// - parameter string: The `String` to write.
288+ /// - parameter encoding: The `String.Encoding` to use when writing the string. This will default to `.utf8`.
289+ /// - parameter allowLossyConversion: Whether to permit lossy conversion when writing the string. Defaults to `false`.
290+ ///
291+ /// - returns: Return total number of bytes written upon success. Return `-1` upon failure.
292+
293+ func write( _ string: String , encoding: String . Encoding = . utf8, allowLossyConversion: Bool = false ) -> Int {
294+
295+ if let data = string. data ( using: encoding, allowLossyConversion: allowLossyConversion) {
296+ let ret = data. withUnsafeBytes {
297+ write ( $0, maxLength: data. count)
298+ }
299+ if ( ret < 0 ) {
300+ print ( " write fail: \( streamError. debugDescription) " )
301+ }
302+ }
303+
304+ return - 1
305+ }
306+
307+ }
308+
309+ extension Date {
310+ func getFormattedDate( format: String ) -> String {
311+ let dateformat = DateFormatter ( )
312+ dateformat. dateFormat = format
313+ return dateformat. string ( from: self )
314+ }
315+ }
0 commit comments