@@ -208,3 +208,59 @@ extension UIAlertController {
208208 self . addAction ( UIAlertAction ( title: " Cancel " . localized, style: . cancel, handler: nil ) )
209209 }
210210}
211+
212+ extension UIApplication {
213+ /// The top most view controller
214+ static var topMostViewController : UIViewController ? {
215+ return UIApplication . shared. keyWindow? . rootViewController? . visibleViewController
216+ }
217+ }
218+
219+ extension UIViewController {
220+ /// The visible view controller from a given view controller
221+ var visibleViewController : UIViewController ? {
222+ if let navigationController = self as? UINavigationController {
223+ return navigationController. topViewController? . visibleViewController
224+ } else if let tabBarController = self as? UITabBarController {
225+ return tabBarController. selectedViewController? . visibleViewController
226+ } else if let presentedViewController = presentedViewController {
227+ return presentedViewController. visibleViewController
228+ } else {
229+ return self
230+ }
231+ }
232+ }
233+
234+ extension OutputStream {
235+
236+ /// Write `String` to `OutputStream`
237+ ///
238+ /// - parameter string: The `String` to write.
239+ /// - parameter encoding: The `String.Encoding` to use when writing the string. This will default to `.utf8`.
240+ /// - parameter allowLossyConversion: Whether to permit lossy conversion when writing the string. Defaults to `false`.
241+ ///
242+ /// - returns: Return total number of bytes written upon success. Return `-1` upon failure.
243+
244+ func write( _ string: String , encoding: String . Encoding = . utf8, allowLossyConversion: Bool = false ) -> Int {
245+
246+ if let data = string. data ( using: encoding, allowLossyConversion: allowLossyConversion) {
247+ let ret = data. withUnsafeBytes {
248+ write ( $0, maxLength: data. count)
249+ }
250+ if ( ret < 0 ) {
251+ print ( " write fail: \( streamError. debugDescription) " )
252+ }
253+ }
254+
255+ return - 1
256+ }
257+
258+ }
259+
260+ extension Date {
261+ func getFormattedDate( format: String ) -> String {
262+ let dateformat = DateFormatter ( )
263+ dateformat. dateFormat = format
264+ return dateformat. string ( from: self )
265+ }
266+ }
0 commit comments