@@ -257,3 +257,59 @@ extension UIAlertController {
257
257
self . addAction ( UIAlertAction ( title: " Cancel " . localized, style: . cancel, handler: nil ) )
258
258
}
259
259
}
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