41 changed files with 1195 additions and 4309 deletions
-
4.idea/encodings.xml
-
447.idea/kplayer.iml
-
4.idea/misc.xml
-
9Podfile
-
96kplayer.xcodeproj/project.pbxproj
-
49kplayer/AppDelegate.swift
-
15kplayer/Base.lproj/Main.storyboard
-
7kplayer/Info.plist
-
28kplayer/core/ItemModel.swift
-
54kplayer/core/MediaItem.swift
-
211kplayer/core/NetworkManager.swift
-
91kplayer/detail/DetailViewController.swift
-
2kplayer/detail/HeaderCell.swift
-
2kplayer/detail/ItemCell.swift
-
40kplayer/detail/VideoPlayerController.swift
-
1419kplayer/exswift/Array.swift
-
18kplayer/exswift/Bool.swift
-
21kplayer/exswift/Character.swift
-
421kplayer/exswift/Dictionary.swift
-
93kplayer/exswift/Double.swift
-
19kplayer/exswift/ExSwift.h
-
282kplayer/exswift/ExSwift.swift
-
83kplayer/exswift/Float.swift
-
256kplayer/exswift/Int.swift
-
64kplayer/exswift/NSArray.swift
-
318kplayer/exswift/NSDate.swift
-
80kplayer/exswift/Range.swift
-
244kplayer/exswift/Sequence.swift
-
403kplayer/exswift/String.swift
-
153kplayer/master/MasterViewController.swift
-
106kplayer/photo/MediaPhotoController.swift
-
19kplayer/util/ImageLoadOperation.swift
-
14kplayer/util/LayoutTools.swift
-
4kplayer/util/NetData.swift
-
4kplayer/util/UploadOperation.swift
-
67kplayer/util/ViewControllerExtensions.swift
-
38kplayer/util/alamoimage.swift
-
48kplayer/util/alamojson.swift
-
16kplayer/util/stringutil.swift
-
2kplayerTests/Info.plist
-
9kplayerTests/kplayerTests.swift
@ -1,4 +1,6 @@ |
|||||
<?xml version="1.0" encoding="UTF-8"?> |
<?xml version="1.0" encoding="UTF-8"?> |
||||
<project version="4"> |
<project version="4"> |
||||
<component name="Encoding" useUTFGuessing="true" native2AsciiForPropertiesFiles="false" /> |
|
||||
|
<component name="Encoding" useUTFGuessing="true" native2AsciiForPropertiesFiles="false"> |
||||
|
<file url="PROJECT" charset="UTF-8" /> |
||||
|
</component> |
||||
</project> |
</project> |
||||
@ -1,8 +1,451 @@ |
|||||
<?xml version="1.0" encoding="UTF-8"?> |
<?xml version="1.0" encoding="UTF-8"?> |
||||
<module type="CIDR_MODULE" version="4"> |
<module type="CIDR_MODULE" version="4"> |
||||
<component name="NewModuleRootManager"> |
<component name="NewModuleRootManager"> |
||||
<content url="file://$MODULE_DIR$" /> |
|
||||
<orderEntry type="inheritedJdk" /> |
|
||||
|
<content url="file://$MODULE_DIR$"> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/kplayerTests/kplayerTests.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/kplayerTests/Info.plist" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Podfile" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/kplayer/detail/VideoPlayerController.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/kplayer/detail/HeaderCell.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/kplayer/detail/ItemCell.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/kplayer/detail/DetailViewController.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/kplayer/Info.plist" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/kplayer/AppDelegate.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/kplayer/Images.xcassets" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/kplayer/Kirschkeks-256x256.png" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/kplayer/photo/MediaPhotoController.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/kplayer/util/NetData.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/kplayer/util/ImageLoadOperation.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/kplayer/util/DataLoadOperation.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/kplayer/util/HanekeFetchOperation.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/kplayer/util/UIImageExtension.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/kplayer/util/ViewControllerExtensions.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/kplayer/util/LayoutTools.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/kplayer/util/UploadOperation.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/kplayer/util/alamoimage.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/kplayer/util/NetworkHelper.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/kplayer/util/stringutil.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/kplayer/core/NetworkManager.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/kplayer/core/MediaItem.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/kplayer/core/ItemModel.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/kplayer/kplayer.xcdatamodeld/kplayer.xcdatamodel" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/kplayer/master/MasterViewController.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/kplayer/Base.lproj/LaunchScreen.xib" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/kplayer/Base.lproj/Main.storyboard" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Alamofire/Source/MultipartFormData.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Alamofire/Source/Download.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Alamofire/Source/ParameterEncoding.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Alamofire/Source/ResponseSerialization.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Alamofire/Source/ServerTrustPolicy.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Alamofire/Source/Manager.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Alamofire/Source/Result.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Alamofire/Source/Alamofire.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Alamofire/Source/Request.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Alamofire/Source/Stream.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Alamofire/Source/Upload.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Alamofire/Source/Validation.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Alamofire/Source/Error.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/HanekeSwift/Haneke/DiskFetcher.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/HanekeSwift/Haneke/Data.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/HanekeSwift/Haneke/String+Haneke.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/HanekeSwift/Haneke/CGSize+Swift.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/HanekeSwift/Haneke/Log.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/HanekeSwift/Haneke/NetworkFetcher.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/HanekeSwift/Haneke/UIButton+Haneke.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/HanekeSwift/Haneke/Format.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/HanekeSwift/Haneke/Haneke.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/HanekeSwift/Haneke/UIImageView+Haneke.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/HanekeSwift/Haneke/DiskCache.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/HanekeSwift/Haneke/UIView+Haneke.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/HanekeSwift/Haneke/CryptoSwiftMD5.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/HanekeSwift/Haneke/NSFileManager+Haneke.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/HanekeSwift/Haneke/UIImage+Haneke.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/HanekeSwift/Haneke/Fetcher.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/HanekeSwift/Haneke/NSHTTPURLResponse+Haneke.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/HanekeSwift/Haneke/Fetch.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/HanekeSwift/Haneke/Cache.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Cent/Cent/Cent/Array.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Cent/Cent/Cent/Date.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Cent/Cent/Cent/Int.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Cent/Cent/Cent/Range.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Cent/Cent/Cent/Dictionary.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Cent/Cent/Cent/Cent.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Cent/Cent/Cent/Regex.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Cent/Cent/Cent/String.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Target Support Files/Alamofire/Alamofire.modulemap" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Target Support Files/Alamofire/Alamofire-umbrella.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Target Support Files/Alamofire/Info.plist" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Target Support Files/Alamofire/Alamofire-prefix.pch" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Target Support Files/Alamofire/Alamofire.xcconfig" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Target Support Files/Alamofire/Alamofire-dummy.m" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Target Support Files/HanekeSwift/HanekeSwift-prefix.pch" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Target Support Files/HanekeSwift/HanekeSwift-dummy.m" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Target Support Files/HanekeSwift/HanekeSwift.xcconfig" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Target Support Files/HanekeSwift/HanekeSwift-umbrella.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Target Support Files/HanekeSwift/HanekeSwift.modulemap" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Target Support Files/HanekeSwift/Info.plist" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Target Support Files/Cent/Cent-umbrella.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Target Support Files/Cent/Cent-dummy.m" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Target Support Files/Cent/Info.plist" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Target Support Files/Cent/Cent.modulemap" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Target Support Files/Cent/Cent-prefix.pch" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Target Support Files/Cent/Cent.xcconfig" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Target Support Files/AFNetworking/AFNetworking-umbrella.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Target Support Files/AFNetworking/AFNetworking-dummy.m" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Target Support Files/AFNetworking/AFNetworking.xcconfig" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Target Support Files/AFNetworking/AFNetworking-prefix.pch" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Target Support Files/AFNetworking/Info.plist" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Target Support Files/AFNetworking/AFNetworking.modulemap" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Target Support Files/Nimbus/Nimbus.xcconfig" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Target Support Files/Nimbus/Nimbus-prefix.pch" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Target Support Files/Nimbus/Nimbus-dummy.m" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Target Support Files/Nimbus/Info.plist" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Target Support Files/Nimbus/Nimbus.modulemap" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Target Support Files/Nimbus/Nimbus-umbrella.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Target Support Files/ALMoviePlayerController/ALMoviePlayerController-dummy.m" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Target Support Files/ALMoviePlayerController/ALMoviePlayerController-prefix.pch" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Target Support Files/ALMoviePlayerController/ALMoviePlayerController.modulemap" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Target Support Files/ALMoviePlayerController/Info.plist" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Target Support Files/ALMoviePlayerController/ALMoviePlayerController.xcconfig" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Target Support Files/ALMoviePlayerController/ALMoviePlayerController-umbrella.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Target Support Files/Dollar/Dollar-dummy.m" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Target Support Files/Dollar/Dollar.modulemap" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Target Support Files/Dollar/Dollar-prefix.pch" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Target Support Files/Dollar/Info.plist" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Target Support Files/Dollar/Dollar.xcconfig" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Target Support Files/Dollar/Dollar-umbrella.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Target Support Files/SwiftyJSON/SwiftyJSON.xcconfig" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Target Support Files/SwiftyJSON/SwiftyJSON-umbrella.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Target Support Files/SwiftyJSON/Info.plist" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Target Support Files/SwiftyJSON/SwiftyJSON-prefix.pch" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Target Support Files/SwiftyJSON/SwiftyJSON.modulemap" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Target Support Files/SwiftyJSON/SwiftyJSON-dummy.m" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Target Support Files/Pods/Pods-acknowledgements.markdown" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Target Support Files/Pods/Pods.modulemap" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Target Support Files/Pods/Pods-resources.sh" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Target Support Files/Pods/Pods-dummy.m" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Target Support Files/Pods/Pods.release.xcconfig" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Target Support Files/Pods/Info.plist" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Target Support Files/Pods/Pods-umbrella.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Target Support Files/Pods/Pods-frameworks.sh" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Target Support Files/Pods/Pods.debug.xcconfig" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Target Support Files/Pods/Pods-acknowledgements.plist" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/AFNetworking/AFNetworking/AFSecurityPolicy.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/AFNetworking/AFNetworking/AFURLRequestSerialization.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/AFNetworking/AFNetworking/AFNetworking.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/AFNetworking/AFNetworking/AFURLResponseSerialization.m" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/AFNetworking/AFNetworking/AFHTTPSessionManager.m" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.m" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/AFNetworking/AFNetworking/AFURLResponseSerialization.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.m" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/AFNetworking/AFNetworking/AFNetworkReachabilityManager.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/AFNetworking/AFNetworking/AFHTTPSessionManager.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/AFNetworking/AFNetworking/AFSecurityPolicy.m" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperationManager.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/AFNetworking/AFNetworking/AFURLSessionManager.m" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperationManager.m" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/AFNetworking/AFNetworking/AFURLSessionManager.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/AFNetworking/AFNetworking/AFURLRequestSerialization.m" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/AFNetworking/AFNetworking/AFNetworkReachabilityManager.m" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/AFNetworking/UIKit+AFNetworking/UIAlertView+AFNetworking.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/AFNetworking/UIKit+AFNetworking/UIButton+AFNetworking.m" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.m" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/AFNetworking/UIKit+AFNetworking/UIKit+AFNetworking.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/AFNetworking/UIKit+AFNetworking/UIRefreshControl+AFNetworking.m" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/AFNetworking/UIKit+AFNetworking/UIImage+AFNetworking.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/AFNetworking/UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.m" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/AFNetworking/UIKit+AFNetworking/UIButton+AFNetworking.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/AFNetworking/UIKit+AFNetworking/UIRefreshControl+AFNetworking.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/AFNetworking/UIKit+AFNetworking/UIProgressView+AFNetworking.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/AFNetworking/UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/AFNetworking/UIKit+AFNetworking/UIProgressView+AFNetworking.m" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/AFNetworking/UIKit+AFNetworking/UIImageView+AFNetworking.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/AFNetworking/UIKit+AFNetworking/AFNetworkActivityIndicatorManager.m" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/AFNetworking/UIKit+AFNetworking/UIImageView+AFNetworking.m" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/AFNetworking/UIKit+AFNetworking/AFNetworkActivityIndicatorManager.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/AFNetworking/UIKit+AFNetworking/UIAlertView+AFNetworking.m" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/core/src/NIDebuggingTools.m" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/core/src/NISnapshotRotation.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/core/src/NIDebuggingTools.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/core/src/NIFoundationMethods.m" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/core/src/NIDeviceOrientation.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/core/src/NimbusCore.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/core/src/NIFoundationMethods.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/core/src/NIActions.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/core/src/NIInMemoryCache.m" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/core/src/NIRuntimeClassModifications.m" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/core/src/NIInMemoryCache.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/core/src/NIRuntimeClassModifications.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/core/src/NIButtonUtilities.m" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/core/src/NIImageUtilities.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/core/src/NIButtonUtilities.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/core/src/NIOperations.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/core/src/NINonEmptyCollectionTesting.m" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/core/src/NIActions.m" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/core/src/NIDeviceOrientation.m" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/core/src/NIState.m" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/core/src/NIImageUtilities.m" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/core/src/NICommonMetrics.m" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/core/src/NINonEmptyCollectionTesting.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/core/src/NIState.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/core/src/NIError.m" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/core/src/NICommonMetrics.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/core/src/NINetworkActivity.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/core/src/NIPreprocessorMacros.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/core/src/NIError.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/core/src/UIResponder+NimbusCore.m" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/core/src/NIPaths.m" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/core/src/NIViewRecycler.m" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/core/src/NISDKAvailability.m" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/core/src/UIResponder+NimbusCore.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/core/src/NIOperations.m" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/core/src/NIViewRecycler.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/core/src/NISDKAvailability.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/core/src/NIOperations+Subclassing.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/core/src/NINonRetainingCollections.m" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/core/src/NINetworkActivity.m" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/core/src/NIActions+Subclassing.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/core/src/NINonRetainingCollections.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/core/src/NimbusCore+Additions.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/core/src/NIPaths.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/core/src/NISnapshotRotation.m" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/pagingscrollview/src/NIPagingScrollView.m" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/pagingscrollview/src/NIPagingScrollViewPage.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/pagingscrollview/src/NIPagingScrollView.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/pagingscrollview/src/NIPagingScrollView+Subclassing.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/pagingscrollview/src/NimbusPagingScrollView.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/pagingscrollview/src/NIPagingScrollViewPage.m" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/photos/src/NIPhotoAlbumScrollViewDelegate.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/photos/src/NIPhotoAlbumScrollViewDataSource.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/photos/src/NimbusPhotos.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/photos/src/NIPhotoScrubberView.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/photos/src/NIPhotoAlbumScrollView.m" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/photos/src/NIPhotoScrollView.m" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/photos/src/NIToolbarPhotoViewController.m" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/photos/src/NIToolbarPhotoViewController.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/photos/src/NIPhotoAlbumScrollView.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/photos/src/NIPhotoScrollView.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/photos/src/NIPhotoScrollViewPhotoSize.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/photos/src/NIPhotoScrollViewDelegate.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Nimbus/src/photos/src/NIPhotoScrubberView.m" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/ALMoviePlayerController/ALMoviePlayerController/ALMoviePlayerController.m" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/ALMoviePlayerController/ALMoviePlayerController/Images/moviePause.png" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/ALMoviePlayerController/ALMoviePlayerController/Images/movieBackward.png" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/ALMoviePlayerController/ALMoviePlayerController/Images/movieForward.png" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/ALMoviePlayerController/ALMoviePlayerController/Images/movieBackward@2x.png" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/ALMoviePlayerController/ALMoviePlayerController/Images/movieBackwardSelected@2x.png" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/ALMoviePlayerController/ALMoviePlayerController/Images/movieForwardSelected.png" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/ALMoviePlayerController/ALMoviePlayerController/Images/movieEndFullscreen.png" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/ALMoviePlayerController/ALMoviePlayerController/Images/moviePause@2x.png" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/ALMoviePlayerController/ALMoviePlayerController/Images/movieBackwardSelected.png" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/ALMoviePlayerController/ALMoviePlayerController/Images/movieForward@2x.png" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/ALMoviePlayerController/ALMoviePlayerController/Images/movieEndFullscreen@2x.png" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/ALMoviePlayerController/ALMoviePlayerController/Images/moviePlay@2x.png" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/ALMoviePlayerController/ALMoviePlayerController/Images/moviePlay.png" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/ALMoviePlayerController/ALMoviePlayerController/Images/movieFullscreen@2x.png" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/ALMoviePlayerController/ALMoviePlayerController/Images/movieFullscreen.png" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/ALMoviePlayerController/ALMoviePlayerController/Images/movieForwardSelected@2x.png" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/ALMoviePlayerController/ALMoviePlayerController/ALButton.m" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/ALMoviePlayerController/ALMoviePlayerController/ALAirplayView.m" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/ALMoviePlayerController/ALMoviePlayerController/ALMoviePlayerController.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/ALMoviePlayerController/ALMoviePlayerController/ALAirplayView.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/ALMoviePlayerController/ALMoviePlayerController/ALButton.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/ALMoviePlayerController/ALMoviePlayerController/ALMoviePlayerControls.m" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/ALMoviePlayerController/ALMoviePlayerController/ALMoviePlayerControls.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Dollar/Dollar/Dollar/Dollar.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Dollar/Dollar/Dollar/Dollar.h" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/Dollar/Dollar/Dollar/AutoCurry.swift" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/Pods/SwiftyJSON/Source/SwiftyJSON.swift" isTestSource="false" /> |
||||
|
</content> |
||||
<orderEntry type="sourceFolder" forTests="false" /> |
<orderEntry type="sourceFolder" forTests="false" /> |
||||
|
<orderEntry type="module-library"> |
||||
|
<library name="Header Search Paths"> |
||||
|
<CLASSES> |
||||
|
<root url="file://$MODULE_DIR$/Pods/Headers/Private" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/PlugIns/Xcode3Core.ideplugin/Contents/SharedSupport/Developer/Library/Frameworks/InterfaceBuilderKit.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/PlugIns/Xcode3Core.ideplugin/Contents/SharedSupport/Developer/Library/Frameworks/DTPerformanceSession.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Frameworks/XCTest.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/HealthKit.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PassKit.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CoreAudioKit.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/MultipeerConnectivity.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AssetsLibrary.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/WatchConnectivity.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CoreVideo.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/StoreKit.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/OpenGLES.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CFNetwork.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Accelerate.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Accelerate.framework/Frameworks/vImage.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Accelerate.framework/Frameworks/vecLib.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AddressBookUI.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/EventKit.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/WatchKit.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GSS.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AudioUnit.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CoreSpotlight.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/LocalAuthentication.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/EventKitUI.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/MediaToolbox.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Contacts.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/QuickLook.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/SafariServices.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameplayKit.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/WebKit.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CoreImage.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Photos.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/MetalPerformanceShaders.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/JavaScriptCore.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PushKit.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CoreTelephony.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CoreText.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/ReplayKit.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/SpriteKit.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Twitter.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/NetworkExtension.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CoreAudio.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CoreData.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/UIKit.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Foundation.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/MapKit.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CoreFoundation.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/ContactsUI.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CoreMedia.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/MediaAccessibility.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/ExternalAccessory.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Security.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/ModelIO.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GLKit.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/MetalKit.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/HomeKit.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AVKit.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CoreBluetooth.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AdSupport.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CoreMIDI.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Social.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/SystemConfiguration.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Accounts.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/OpenAL.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/NotificationCenter.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/ImageIO.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PhotosUI.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/MobileCoreServices.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AddressBook.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/NewsstandKit.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/MessageUI.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameKit.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CoreLocation.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/QuartzCore.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/iAd.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CoreMotion.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/include" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/7.0.2/include" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1" /> |
||||
|
</CLASSES> |
||||
|
<SOURCES> |
||||
|
<root url="file://$MODULE_DIR$/Pods/Headers/Private" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/PlugIns/Xcode3Core.ideplugin/Contents/SharedSupport/Developer/Library/Frameworks/InterfaceBuilderKit.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/PlugIns/Xcode3Core.ideplugin/Contents/SharedSupport/Developer/Library/Frameworks/DTPerformanceSession.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Frameworks/XCTest.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/HealthKit.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PassKit.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CoreAudioKit.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/MultipeerConnectivity.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AssetsLibrary.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/WatchConnectivity.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CoreVideo.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/StoreKit.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/OpenGLES.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CFNetwork.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Accelerate.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Accelerate.framework/Frameworks/vImage.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Accelerate.framework/Frameworks/vecLib.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AddressBookUI.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/EventKit.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/WatchKit.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GSS.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AudioUnit.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CoreSpotlight.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/LocalAuthentication.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/EventKitUI.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Metal.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/MediaToolbox.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Contacts.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/QuickLook.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/SafariServices.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameplayKit.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/WebKit.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CoreImage.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Photos.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/MetalPerformanceShaders.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/JavaScriptCore.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PushKit.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CoreTelephony.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CoreText.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/ReplayKit.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/SpriteKit.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Twitter.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/NetworkExtension.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CoreAudio.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CoreData.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/UIKit.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Foundation.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/MapKit.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CoreFoundation.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/ContactsUI.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CoreMedia.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/MediaAccessibility.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/ExternalAccessory.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Security.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/ModelIO.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GLKit.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/MetalKit.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/HomeKit.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AVKit.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CoreBluetooth.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AdSupport.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CoreMIDI.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Social.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/SystemConfiguration.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Accounts.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/OpenAL.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/NotificationCenter.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/ImageIO.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PhotosUI.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/MobileCoreServices.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AddressBook.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/NewsstandKit.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/MessageUI.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameKit.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CoreLocation.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/QuartzCore.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/iAd.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CoreMotion.framework/Headers" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/include" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/7.0.2/include" /> |
||||
|
<root url="file:///Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1" /> |
||||
|
</SOURCES> |
||||
|
</library> |
||||
|
</orderEntry> |
||||
</component> |
</component> |
||||
</module> |
</module> |
||||
@ -1,4 +0,0 @@ |
|||||
<?xml version="1.0" encoding="UTF-8"?> |
|
||||
<project version="4"> |
|
||||
<component name="ProjectRootManager" version="2" /> |
|
||||
</project> |
|
||||
@ -0,0 +1,28 @@ |
|||||
|
// |
||||
|
// Created by Marco Schmickler on 29.06.15. |
||||
|
// Copyright (c) 2015 Marco Schmickler. All rights reserved. |
||||
|
// |
||||
|
|
||||
|
import Foundation |
||||
|
|
||||
|
class ItemModel { |
||||
|
var items = [MediaItem]() |
||||
|
var itemsMap = Dictionary<String, MediaItem>() |
||||
|
|
||||
|
func addItem(item: MediaItem) { |
||||
|
let path = item.rootSlash + item.path |
||||
|
print(path) |
||||
|
var folder = itemsMap[path] |
||||
|
|
||||
|
if folder == nil { |
||||
|
folder = MediaItem(name: "", path: item.path, root: item.root, type: ItemType.FOLDER) |
||||
|
itemsMap[path] = folder! |
||||
|
items.append(folder!) |
||||
|
} |
||||
|
|
||||
|
item.index = folder!.children.count |
||||
|
folder!.children.append(item) |
||||
|
item.parent = folder |
||||
|
} |
||||
|
|
||||
|
} |
||||
1419
kplayer/exswift/Array.swift
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -1,18 +0,0 @@ |
|||||
// |
|
||||
// Bool.swift |
|
||||
// ExSwift |
|
||||
// |
|
||||
// Created by Hernandez Alvarez, David on 2/10/15. |
|
||||
// Copyright (c) 2015 pNre. All rights reserved. |
|
||||
// |
|
||||
|
|
||||
import Foundation |
|
||||
|
|
||||
extension Bool { |
|
||||
|
|
||||
mutating func toggle() -> Bool { |
|
||||
self = !self |
|
||||
return self |
|
||||
} |
|
||||
|
|
||||
} |
|
||||
@ -1,21 +0,0 @@ |
|||||
// |
|
||||
// Character.swift |
|
||||
// ExSwift |
|
||||
// |
|
||||
// Created by Cenny Davidsson on 2014-12-08. |
|
||||
// Copyright (c) 2014 pNre. All rights reserved. |
|
||||
// |
|
||||
|
|
||||
import Foundation |
|
||||
|
|
||||
public extension Character { |
|
||||
|
|
||||
/** |
|
||||
If the character represents an integer that fits into an Int, returns |
|
||||
the corresponding integer. |
|
||||
*/ |
|
||||
public func toInt () -> Int? { |
|
||||
return String(self).toInt() |
|
||||
} |
|
||||
|
|
||||
} |
|
||||
@ -1,421 +0,0 @@ |
|||||
// |
|
||||
// Dictionary.swift |
|
||||
// ExSwift |
|
||||
// |
|
||||
// Created by pNre on 04/06/14. |
|
||||
// Copyright (c) 2014 pNre. All rights reserved. |
|
||||
// |
|
||||
|
|
||||
import Foundation |
|
||||
import Swift |
|
||||
|
|
||||
internal extension Dictionary { |
|
||||
|
|
||||
/** |
|
||||
Difference of self and the input dictionaries. |
|
||||
Two dictionaries are considered equal if they contain the same [key: value] pairs. |
|
||||
|
|
||||
:param: dictionaries Dictionaries to subtract |
|
||||
:returns: Difference of self and the input dictionaries |
|
||||
*/ |
|
||||
func difference <V: Equatable> (dictionaries: [Key: V]...) -> [Key: V] { |
|
||||
|
|
||||
var result = [Key: V]() |
|
||||
|
|
||||
each { |
|
||||
if let item = $1 as? V { |
|
||||
result[$0] = item |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
// Difference |
|
||||
for dictionary in dictionaries { |
|
||||
for (key, value) in dictionary { |
|
||||
if result.has(key) && result[key] == value { |
|
||||
result.removeValueForKey(key) |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
return result |
|
||||
|
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Union of self and the input dictionaries. |
|
||||
|
|
||||
:param: dictionaries Dictionaries to join |
|
||||
:returns: Union of self and the input dictionaries |
|
||||
*/ |
|
||||
func union (dictionaries: Dictionary...) -> Dictionary { |
|
||||
|
|
||||
var result = self |
|
||||
|
|
||||
dictionaries.each { (dictionary) -> Void in |
|
||||
dictionary.each { (key, value) -> Void in |
|
||||
_ = result.updateValue(value, forKey: key) |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
return result |
|
||||
|
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Intersection of self and the input dictionaries. |
|
||||
Two dictionaries are considered equal if they contain the same [key: value] copules. |
|
||||
|
|
||||
:param: values Dictionaries to intersect |
|
||||
:returns: Dictionary of [key: value] couples contained in all the dictionaries and self |
|
||||
*/ |
|
||||
func intersection <K, V where K: Equatable, V: Equatable> (dictionaries: [K: V]...) -> [K: V] { |
|
||||
|
|
||||
// Casts self from [Key: Value] to [K: V] |
|
||||
let filtered = mapFilter { (item, value) -> (K, V)? in |
|
||||
if (item is K) && (value is V) { |
|
||||
return (item as! K, value as! V) |
|
||||
} |
|
||||
|
|
||||
return nil |
|
||||
} |
|
||||
|
|
||||
// Intersection |
|
||||
return filtered.filter({ (key: K, value: V) -> Bool in |
|
||||
// check for [key: value] in all the dictionaries |
|
||||
dictionaries.all { $0.has(key) && $0[key] == value } |
|
||||
}) |
|
||||
|
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Checks if a key exists in the dictionary. |
|
||||
|
|
||||
:param: key Key to check |
|
||||
:returns: true if the key exists |
|
||||
*/ |
|
||||
func has (key: Key) -> Bool { |
|
||||
return indexForKey(key) != nil |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Creates an Array with values generated by running |
|
||||
each [key: value] of self through the mapFunction. |
|
||||
|
|
||||
:param: mapFunction |
|
||||
:returns: Mapped array |
|
||||
*/ |
|
||||
func toArray <V> (map: (Key, Value) -> V) -> [V] { |
|
||||
|
|
||||
var mapped = [V]() |
|
||||
|
|
||||
each { |
|
||||
mapped.append(map($0, $1)) |
|
||||
} |
|
||||
|
|
||||
return mapped |
|
||||
|
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Creates a Dictionary with the same keys as self and values generated by running |
|
||||
each [key: value] of self through the mapFunction. |
|
||||
|
|
||||
:param: mapFunction |
|
||||
:returns: Mapped dictionary |
|
||||
*/ |
|
||||
func mapValues <V> (map: (Key, Value) -> V) -> [Key: V] { |
|
||||
|
|
||||
var mapped = [Key: V]() |
|
||||
|
|
||||
each { |
|
||||
mapped[$0] = map($0, $1) |
|
||||
} |
|
||||
|
|
||||
return mapped |
|
||||
|
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Creates a Dictionary with the same keys as self and values generated by running |
|
||||
each [key: value] of self through the mapFunction discarding nil return values. |
|
||||
|
|
||||
:param: mapFunction |
|
||||
:returns: Mapped dictionary |
|
||||
*/ |
|
||||
func mapFilterValues <V> (map: (Key, Value) -> V?) -> [Key: V] { |
|
||||
|
|
||||
var mapped = [Key: V]() |
|
||||
|
|
||||
each { |
|
||||
if let value = map($0, $1) { |
|
||||
mapped[$0] = value |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
return mapped |
|
||||
|
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Creates a Dictionary with keys and values generated by running |
|
||||
each [key: value] of self through the mapFunction discarding nil return values. |
|
||||
|
|
||||
:param: mapFunction |
|
||||
:returns: Mapped dictionary |
|
||||
*/ |
|
||||
func mapFilter <K, V> (map: (Key, Value) -> (K, V)?) -> [K: V] { |
|
||||
|
|
||||
var mapped = [K: V]() |
|
||||
|
|
||||
each { |
|
||||
if let value = map($0, $1) { |
|
||||
mapped[value.0] = value.1 |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
return mapped |
|
||||
|
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Creates a Dictionary with keys and values generated by running |
|
||||
each [key: value] of self through the mapFunction. |
|
||||
|
|
||||
:param: mapFunction |
|
||||
:returns: Mapped dictionary |
|
||||
*/ |
|
||||
func map <K, V> (map: (Key, Value) -> (K, V)) -> [K: V] { |
|
||||
|
|
||||
var mapped = [K: V]() |
|
||||
|
|
||||
self.each({ |
|
||||
let (_key, _value) = map($0, $1) |
|
||||
mapped[_key] = _value |
|
||||
}) |
|
||||
|
|
||||
return mapped |
|
||||
|
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Loops trough each [key: value] pair in self. |
|
||||
|
|
||||
:param: eachFunction Function to inovke on each loop |
|
||||
*/ |
|
||||
func each (each: (Key, Value) -> ()) { |
|
||||
|
|
||||
for (key, value) in self { |
|
||||
each(key, value) |
|
||||
} |
|
||||
|
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Constructs a dictionary containing every [key: value] pair from self |
|
||||
for which testFunction evaluates to true. |
|
||||
|
|
||||
:param: testFunction Function called to test each key, value |
|
||||
:returns: Filtered dictionary |
|
||||
*/ |
|
||||
func filter (test: (Key, Value) -> Bool) -> Dictionary { |
|
||||
|
|
||||
var result = Dictionary() |
|
||||
|
|
||||
for (key, value) in self { |
|
||||
if test(key, value) { |
|
||||
result[key] = value |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
return result |
|
||||
|
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Creates a dictionary composed of keys generated from the results of |
|
||||
running each element of self through groupingFunction. The corresponding |
|
||||
value of each key is an array of the elements responsible for generating the key. |
|
||||
|
|
||||
:param: groupingFunction |
|
||||
:returns: Grouped dictionary |
|
||||
*/ |
|
||||
func groupBy <T> (group: (Key, Value) -> T) -> [T: [Value]] { |
|
||||
|
|
||||
var result = [T: [Value]]() |
|
||||
|
|
||||
for (key, value) in self { |
|
||||
|
|
||||
let groupKey = group(key, value) |
|
||||
|
|
||||
// If element has already been added to dictionary, append to it. If not, create one. |
|
||||
if result.has(groupKey) { |
|
||||
result[groupKey]! += [value] |
|
||||
} else { |
|
||||
result[groupKey] = [value] |
|
||||
} |
|
||||
|
|
||||
} |
|
||||
|
|
||||
return result |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Similar to groupBy. Doesn't return a list of values, but the number of values for each group. |
|
||||
|
|
||||
:param: groupingFunction Function called to define the grouping key |
|
||||
:returns: Grouped dictionary |
|
||||
*/ |
|
||||
func countBy <T> (group: (Key, Value) -> (T)) -> [T: Int] { |
|
||||
|
|
||||
var result = [T: Int]() |
|
||||
|
|
||||
for (key, value) in self { |
|
||||
|
|
||||
let groupKey = group(key, value) |
|
||||
|
|
||||
// If element has already been added to dictionary, append to it. If not, create one. |
|
||||
if result.has(groupKey) { |
|
||||
result[groupKey]!++ |
|
||||
} else { |
|
||||
result[groupKey] = 1 |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
return result |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Checks if test evaluates true for all the elements in self. |
|
||||
|
|
||||
:param: test Function to call for each element |
|
||||
:returns: true if test returns true for all the elements in self |
|
||||
*/ |
|
||||
func all (test: (Key, Value) -> (Bool)) -> Bool { |
|
||||
|
|
||||
for (key, value) in self { |
|
||||
if !test(key, value) { |
|
||||
return false |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
return true |
|
||||
|
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Checks if test evaluates true for any element of self. |
|
||||
|
|
||||
:param: test Function to call for each element |
|
||||
:returns: true if test returns true for any element of self |
|
||||
*/ |
|
||||
func any (test: (Key, Value) -> (Bool)) -> Bool { |
|
||||
|
|
||||
for (key, value) in self { |
|
||||
if test(key, value) { |
|
||||
return true |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
return false |
|
||||
|
|
||||
} |
|
||||
|
|
||||
|
|
||||
/** |
|
||||
Returns the number of elements which meet the condition |
|
||||
|
|
||||
:param: test Function to call for each element |
|
||||
:returns: the number of elements meeting the condition |
|
||||
*/ |
|
||||
func countWhere (test: (Key, Value) -> (Bool)) -> Int { |
|
||||
|
|
||||
var result = 0 |
|
||||
|
|
||||
for (key, value) in self { |
|
||||
if test(key, value) { |
|
||||
result++ |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
return result |
|
||||
} |
|
||||
|
|
||||
|
|
||||
/** |
|
||||
Recombines the [key: value] couples in self trough combine using initial as initial value. |
|
||||
|
|
||||
:param: initial Initial value |
|
||||
:param: combine Function that reduces the dictionary |
|
||||
:returns: Resulting value |
|
||||
*/ |
|
||||
func reduce <U> (initial: U, combine: (U, Element) -> U) -> U { |
|
||||
return Swift.reduce(self, initial, combine) |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Returns a copy of self, filtered to only have values for the whitelisted keys. |
|
||||
|
|
||||
:param: keys Whitelisted keys |
|
||||
:returns: Filtered dictionary |
|
||||
*/ |
|
||||
func pick (keys: [Key]) -> Dictionary { |
|
||||
return filter { (key: Key, _) -> Bool in |
|
||||
return keys.contains(key) |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Returns a copy of self, filtered to only have values for the whitelisted keys. |
|
||||
|
|
||||
:param: keys Whitelisted keys |
|
||||
:returns: Filtered dictionary |
|
||||
*/ |
|
||||
func pick (keys: Key...) -> Dictionary { |
|
||||
return pick(unsafeBitCast(keys, [Key].self)) |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Returns a copy of self, filtered to only have values for the whitelisted keys. |
|
||||
|
|
||||
:param: keys Keys to get |
|
||||
:returns: Dictionary with the given keys |
|
||||
*/ |
|
||||
func at (keys: Key...) -> Dictionary { |
|
||||
return pick(keys) |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Removes a (key, value) pair from self and returns it as tuple. |
|
||||
If the dictionary is empty returns nil. |
|
||||
|
|
||||
:returns: (key, value) tuple |
|
||||
*/ |
|
||||
mutating func shift () -> (Key, Value)? { |
|
||||
if let key = keys.first { |
|
||||
return (key, removeValueForKey(key)!) |
|
||||
} |
|
||||
|
|
||||
return nil |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Difference operator |
|
||||
*/ |
|
||||
public func - <K, V: Equatable> (first: [K: V], second: [K: V]) -> [K: V] { |
|
||||
return first.difference(second) |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Intersection operator |
|
||||
*/ |
|
||||
public func & <K, V: Equatable> (first: [K: V], second: [K: V]) -> [K: V] { |
|
||||
return first.intersection(second) |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Union operator |
|
||||
*/ |
|
||||
public func | <K: Hashable, V> (first: [K: V], second: [K: V]) -> [K: V] { |
|
||||
return first.union(second) |
|
||||
} |
|
||||
@ -1,93 +0,0 @@ |
|||||
// |
|
||||
// Double.swift |
|
||||
// ExSwift |
|
||||
// |
|
||||
// Created by pNre on 10/07/14. |
|
||||
// Copyright (c) 2014 pNre. All rights reserved. |
|
||||
// |
|
||||
|
|
||||
import Foundation |
|
||||
|
|
||||
public extension Double { |
|
||||
|
|
||||
/** |
|
||||
Absolute value. |
|
||||
|
|
||||
:returns: fabs(self) |
|
||||
*/ |
|
||||
func abs () -> Double { |
|
||||
return Foundation.fabs(self) |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Squared root. |
|
||||
|
|
||||
:returns: sqrt(self) |
|
||||
*/ |
|
||||
func sqrt () -> Double { |
|
||||
return Foundation.sqrt(self) |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Rounds self to the largest integer <= self. |
|
||||
|
|
||||
:returns: floor(self) |
|
||||
*/ |
|
||||
func floor () -> Double { |
|
||||
return Foundation.floor(self) |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Rounds self to the smallest integer >= self. |
|
||||
|
|
||||
:returns: ceil(self) |
|
||||
*/ |
|
||||
func ceil () -> Double { |
|
||||
return Foundation.ceil(self) |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Rounds self to the nearest integer. |
|
||||
|
|
||||
:returns: round(self) |
|
||||
*/ |
|
||||
func round () -> Double { |
|
||||
return Foundation.round(self) |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Clamps self to a specified range. |
|
||||
|
|
||||
:param: min Lower bound |
|
||||
:param: max Upper bound |
|
||||
:returns: Clamped value |
|
||||
*/ |
|
||||
func clamp (min: Double, _ max: Double) -> Double { |
|
||||
return Swift.max(min, Swift.min(max, self)) |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Just like round(), except it supports rounding to an arbitrary number, not just 1 |
|
||||
Be careful about rounding errors |
|
||||
|
|
||||
:params: increment the increment to round to |
|
||||
*/ |
|
||||
func roundToNearest(increment: Double) -> Double { |
|
||||
let remainder = self % increment |
|
||||
return remainder < increment / 2 ? self - remainder : self - remainder + increment |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Random double between min and max (inclusive). |
|
||||
|
|
||||
:params: min |
|
||||
:params: max |
|
||||
:returns: Random number |
|
||||
*/ |
|
||||
static func random(min: Double = 0, max: Double) -> Double { |
|
||||
let diff = max - min; |
|
||||
let rand = Double(arc4random() % (UInt32(RAND_MAX) + 1)) |
|
||||
return ((rand / Double(RAND_MAX)) * diff) + min; |
|
||||
} |
|
||||
|
|
||||
} |
|
||||
@ -1,19 +0,0 @@ |
|||||
// |
|
||||
// ExSwift.h |
|
||||
// ExSwift |
|
||||
// |
|
||||
// Created by pNre on 07/06/14. |
|
||||
// Copyright (c) 2014 pNre. All rights reserved. |
|
||||
// |
|
||||
|
|
||||
#import <Foundation/Foundation.h> |
|
||||
|
|
||||
//! Project version number for ExSwift. |
|
||||
FOUNDATION_EXPORT double ExSwiftVersionNumber; |
|
||||
|
|
||||
//! Project version string for ExSwift. |
|
||||
FOUNDATION_EXPORT const unsigned char ExSwiftVersionString[]; |
|
||||
|
|
||||
// In this header, you should import all the public headers of your framework using statements like #import <ExSwift/PublicHeader.h> |
|
||||
|
|
||||
|
|
||||
@ -1,282 +0,0 @@ |
|||||
// |
|
||||
// ExSwift.swift |
|
||||
// ExSwift |
|
||||
// |
|
||||
// Created by pNre on 07/06/14. |
|
||||
// Copyright (c) 2014 pNre. All rights reserved. |
|
||||
// |
|
||||
|
|
||||
import Foundation |
|
||||
|
|
||||
infix operator =~ {} |
|
||||
infix operator |~ {} |
|
||||
infix operator .. {} |
|
||||
infix operator <=> {} |
|
||||
|
|
||||
public typealias Ex = ExSwift |
|
||||
|
|
||||
public class ExSwift { |
|
||||
|
|
||||
/** |
|
||||
Creates a wrapper that, executes function only after being called n times. |
|
||||
|
|
||||
:param: n No. of times the wrapper has to be called before function is invoked |
|
||||
:param: function Function to wrap |
|
||||
:returns: Wrapper function |
|
||||
*/ |
|
||||
public class func after <P, T> (n: Int, function: (P...) -> T) -> ((P...) -> T?) { |
|
||||
|
|
||||
typealias Function = [P] -> T |
|
||||
|
|
||||
var times = n |
|
||||
|
|
||||
return { |
|
||||
(params: P...) -> T? in |
|
||||
|
|
||||
// Workaround for the now illegal (T...) type. |
|
||||
let adaptedFunction = unsafeBitCast(function, Function.self) |
|
||||
|
|
||||
if times-- <= 0 { |
|
||||
return adaptedFunction(params) |
|
||||
} |
|
||||
|
|
||||
return nil |
|
||||
} |
|
||||
|
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Creates a wrapper that, executes function only after being called n times |
|
||||
|
|
||||
:param: n No. of times the wrapper has to be called before function is invoked |
|
||||
:param: function Function to wrap |
|
||||
:returns: Wrapper function |
|
||||
*/ |
|
||||
public class func after <T> (n: Int, function: Void -> T) -> (Void -> T?) { |
|
||||
func callAfter (args: Any?...) -> T { |
|
||||
return function() |
|
||||
} |
|
||||
|
|
||||
let f = ExSwift.after(n, function: callAfter) |
|
||||
|
|
||||
return { f([nil]) } |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Creates a wrapper function that invokes function once. |
|
||||
Repeated calls to the wrapper function will return the value of the first call. |
|
||||
|
|
||||
:param: function Function to wrap |
|
||||
:returns: Wrapper function |
|
||||
*/ |
|
||||
public class func once <P, T> (function: (P...) -> T) -> ((P...) -> T) { |
|
||||
|
|
||||
typealias Function = [P] -> T |
|
||||
|
|
||||
var returnValue: T? = nil |
|
||||
|
|
||||
return { (params: P...) -> T in |
|
||||
|
|
||||
if returnValue != nil { |
|
||||
return returnValue! |
|
||||
} |
|
||||
|
|
||||
let adaptedFunction = unsafeBitCast(function, Function.self) |
|
||||
returnValue = adaptedFunction(params) |
|
||||
|
|
||||
return returnValue! |
|
||||
|
|
||||
} |
|
||||
|
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Creates a wrapper function that invokes function once. |
|
||||
Repeated calls to the wrapper function will return the value of the first call. |
|
||||
|
|
||||
:param: function Function to wrap |
|
||||
:returns: Wrapper function |
|
||||
*/ |
|
||||
public class func once <T> (function: Void -> T) -> (Void -> T) { |
|
||||
let f = ExSwift.once { |
|
||||
(params: Any?...) -> T in |
|
||||
return function() |
|
||||
} |
|
||||
|
|
||||
return { f([nil]) } |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Creates a wrapper that, when called, invokes function with any additional |
|
||||
partial arguments prepended to those provided to the new function. |
|
||||
|
|
||||
:param: function Function to wrap |
|
||||
:param: parameters Arguments to prepend |
|
||||
:returns: Wrapper function |
|
||||
*/ |
|
||||
public class func partial <P, T> (function: (P...) -> T, _ parameters: P...) -> ((P...) -> T) { |
|
||||
typealias Function = [P] -> T |
|
||||
|
|
||||
return { (params: P...) -> T in |
|
||||
let adaptedFunction = unsafeBitCast(function, Function.self) |
|
||||
return adaptedFunction(parameters + params) |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Creates a wrapper (without any parameter) that, when called, invokes function |
|
||||
automatically passing parameters as arguments. |
|
||||
|
|
||||
:param: function Function to wrap |
|
||||
:param: parameters Arguments to pass to function |
|
||||
:returns: Wrapper function |
|
||||
*/ |
|
||||
public class func bind <P, T> (function: (P...) -> T, _ parameters: P...) -> (Void -> T) { |
|
||||
typealias Function = [P] -> T |
|
||||
|
|
||||
return { Void -> T in |
|
||||
let adaptedFunction = unsafeBitCast(function, Function.self) |
|
||||
return adaptedFunction(parameters) |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Creates a wrapper for function that caches the result of function's invocations. |
|
||||
|
|
||||
:param: function Function with one parameter to cache |
|
||||
:returns: Wrapper function |
|
||||
*/ |
|
||||
public class func cached <P: Hashable, R> (function: P -> R) -> (P -> R) { |
|
||||
var cache = [P:R]() |
|
||||
|
|
||||
return { (param: P) -> R in |
|
||||
let key = param |
|
||||
|
|
||||
if let cachedValue = cache[key] { |
|
||||
return cachedValue |
|
||||
} else { |
|
||||
let value = function(param) |
|
||||
cache[key] = value |
|
||||
return value |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Creates a wrapper for function that caches the result of function's invocations. |
|
||||
|
|
||||
:param: function Function to cache |
|
||||
:param: hash Parameters based hashing function that computes the key used to store each result in the cache |
|
||||
:returns: Wrapper function |
|
||||
*/ |
|
||||
public class func cached <P: Hashable, R> (function: (P...) -> R, hash: ((P...) -> P)) -> ((P...) -> R) { |
|
||||
typealias Function = [P] -> R |
|
||||
typealias Hash = [P] -> P |
|
||||
|
|
||||
var cache = [P:R]() |
|
||||
|
|
||||
return { (params: P...) -> R in |
|
||||
let adaptedFunction = unsafeBitCast(function, Function.self) |
|
||||
let adaptedHash = unsafeBitCast(hash, Hash.self) |
|
||||
|
|
||||
let key = adaptedHash(params) |
|
||||
|
|
||||
if let cachedValue = cache[key] { |
|
||||
return cachedValue |
|
||||
} else { |
|
||||
let value = adaptedFunction(params) |
|
||||
cache[key] = value |
|
||||
return value |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Creates a wrapper for function that caches the result of function's invocations. |
|
||||
|
|
||||
:param: function Function to cache |
|
||||
:returns: Wrapper function |
|
||||
*/ |
|
||||
public class func cached <P: Hashable, R> (function: (P...) -> R) -> ((P...) -> R) { |
|
||||
return cached(function, hash: { (params: P...) -> P in return params[0] }) |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Utility method to return an NSRegularExpression object given a pattern. |
|
||||
|
|
||||
:param: pattern Regex pattern |
|
||||
:param: ignoreCase If true the NSRegularExpression is created with the NSRegularExpressionOptions.CaseInsensitive flag |
|
||||
:returns: NSRegularExpression object |
|
||||
*/ |
|
||||
internal class func regex (pattern: String, ignoreCase: Bool = false) -> NSRegularExpression? { |
|
||||
|
|
||||
var options = NSRegularExpressionOptions.DotMatchesLineSeparators.rawValue |
|
||||
|
|
||||
if ignoreCase { |
|
||||
options = NSRegularExpressionOptions.CaseInsensitive.rawValue | options |
|
||||
} |
|
||||
|
|
||||
var error: NSError? = nil |
|
||||
let regex = NSRegularExpression(pattern: pattern, options: NSRegularExpressionOptions(rawValue: options), error: &error) |
|
||||
|
|
||||
return (error == nil) ? regex : nil |
|
||||
|
|
||||
} |
|
||||
|
|
||||
} |
|
||||
|
|
||||
func <=> <T: Comparable>(lhs: T, rhs: T) -> Int { |
|
||||
if lhs < rhs { |
|
||||
return -1 |
|
||||
} else if lhs > rhs { |
|
||||
return 1 |
|
||||
} else { |
|
||||
return 0 |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
* Internal methods |
|
||||
*/ |
|
||||
extension ExSwift { |
|
||||
|
|
||||
/** |
|
||||
* Converts, if possible, and flattens an object from its Objective-C |
|
||||
* representation to the Swift one. |
|
||||
* @param object Object to convert |
|
||||
* @returns Flattenend array of converted values |
|
||||
*/ |
|
||||
internal class func bridgeObjCObject <T, S> (object: S) -> [T] { |
|
||||
var result = [T]() |
|
||||
let reflection = reflect(object) |
|
||||
|
|
||||
// object has an Objective-C type |
|
||||
if let obj = object as? T { |
|
||||
// object has type T |
|
||||
result.append(obj) |
|
||||
} else if reflection.disposition == .ObjCObject { |
|
||||
|
|
||||
var bridgedValue: T!? |
|
||||
|
|
||||
// If it is an NSArray, flattening will produce the expected result |
|
||||
if let array = object as? NSArray { |
|
||||
result += array.flatten() |
|
||||
} else if let bridged = reflection.value as? T { |
|
||||
result.append(bridged) |
|
||||
} |
|
||||
} else if reflection.disposition == .IndexContainer { |
|
||||
// object is a native Swift array |
|
||||
|
|
||||
// recursively convert each item |
|
||||
(0..<reflection.count).each { |
|
||||
let ref = reflection[$0].1 |
|
||||
|
|
||||
result += Ex.bridgeObjCObject(ref.value) |
|
||||
} |
|
||||
|
|
||||
} |
|
||||
|
|
||||
return result |
|
||||
} |
|
||||
|
|
||||
} |
|
||||
@ -1,83 +0,0 @@ |
|||||
// |
|
||||
// Float.swift |
|
||||
// ExSwift |
|
||||
// |
|
||||
// Created by pNre on 04/06/14. |
|
||||
// Copyright (c) 2014 pNre. All rights reserved. |
|
||||
// |
|
||||
|
|
||||
import Foundation |
|
||||
|
|
||||
public extension Float { |
|
||||
|
|
||||
/** |
|
||||
Absolute value. |
|
||||
|
|
||||
:returns: fabs(self) |
|
||||
*/ |
|
||||
func abs () -> Float { |
|
||||
return fabsf(self) |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Squared root. |
|
||||
|
|
||||
:returns: sqrtf(self) |
|
||||
*/ |
|
||||
func sqrt () -> Float { |
|
||||
return sqrtf(self) |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Rounds self to the largest integer <= self. |
|
||||
|
|
||||
:returns: floorf(self) |
|
||||
*/ |
|
||||
func floor () -> Float { |
|
||||
return floorf(self) |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Rounds self to the smallest integer >= self. |
|
||||
|
|
||||
:returns: ceilf(self) |
|
||||
*/ |
|
||||
func ceil () -> Float { |
|
||||
return ceilf(self) |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Rounds self to the nearest integer. |
|
||||
|
|
||||
:returns: roundf(self) |
|
||||
*/ |
|
||||
func round () -> Float { |
|
||||
return roundf(self) |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Clamps self to a specified range. |
|
||||
|
|
||||
:param: min Lower bound |
|
||||
:param: max Upper bound |
|
||||
:returns: Clamped value |
|
||||
*/ |
|
||||
func clamp (min: Float, _ max: Float) -> Float { |
|
||||
return Swift.max(min, Swift.min(max, self)) |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Random float between min and max (inclusive). |
|
||||
|
|
||||
:param: min |
|
||||
:param: max |
|
||||
:returns: Random number |
|
||||
*/ |
|
||||
static func random(min: Float = 0, max: Float) -> Float { |
|
||||
let diff = max - min; |
|
||||
let rand = Float(arc4random() % (UInt32(RAND_MAX) + 1)) |
|
||||
return ((rand / Float(RAND_MAX)) * diff) + min; |
|
||||
} |
|
||||
|
|
||||
} |
|
||||
|
|
||||
@ -1,256 +0,0 @@ |
|||||
// |
|
||||
// Int.swift |
|
||||
// ExSwift |
|
||||
// |
|
||||
// Created by pNre on 03/06/14. |
|
||||
// Copyright (c) 2014 pNre. All rights reserved. |
|
||||
// |
|
||||
|
|
||||
import Foundation |
|
||||
|
|
||||
public extension Int { |
|
||||
|
|
||||
/** |
|
||||
Calls function self times. |
|
||||
|
|
||||
:param: function Function to call |
|
||||
*/ |
|
||||
func times <T> (function: Void -> T) { |
|
||||
(0..<self).each { _ in function(); return } |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Calls function self times. |
|
||||
|
|
||||
:param: function Function to call |
|
||||
*/ |
|
||||
func times (function: Void -> Void) { |
|
||||
(0..<self).each { _ in function(); return } |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Calls function self times passing a value from 0 to self on each call. |
|
||||
|
|
||||
:param: function Function to call |
|
||||
*/ |
|
||||
func times <T> (function: (Int) -> T) { |
|
||||
(0..<self).each { index in function(index); return } |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Checks if a number is even. |
|
||||
|
|
||||
:returns: true if self is even |
|
||||
*/ |
|
||||
func isEven () -> Bool { |
|
||||
return (self % 2) == 0 |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Checks if a number is odd. |
|
||||
|
|
||||
:returns: true if self is odd |
|
||||
*/ |
|
||||
func isOdd () -> Bool { |
|
||||
return !isEven() |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Iterates function, passing in integer values from self up to and including limit. |
|
||||
|
|
||||
:param: limit Last value to pass |
|
||||
:param: function Function to invoke |
|
||||
*/ |
|
||||
func upTo (limit: Int, function: (Int) -> ()) { |
|
||||
if limit < self { |
|
||||
return |
|
||||
} |
|
||||
|
|
||||
(self...limit).each(function) |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Iterates function, passing in integer values from self down to and including limit. |
|
||||
|
|
||||
:param: limit Last value to pass |
|
||||
:param: function Function to invoke |
|
||||
*/ |
|
||||
func downTo (limit: Int, function: (Int) -> ()) { |
|
||||
if limit > self { |
|
||||
return |
|
||||
} |
|
||||
|
|
||||
Array(limit...self).reverse().each(function) |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Clamps self to a specified range. |
|
||||
|
|
||||
:param: range Clamping range |
|
||||
:returns: Clamped value |
|
||||
*/ |
|
||||
func clamp (range: Range<Int>) -> Int { |
|
||||
return clamp(range.startIndex, range.endIndex - 1) |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Clamps self to a specified range. |
|
||||
|
|
||||
:param: min Lower bound |
|
||||
:param: max Upper bound |
|
||||
:returns: Clamped value |
|
||||
*/ |
|
||||
func clamp (min: Int, _ max: Int) -> Int { |
|
||||
return Swift.max(min, Swift.min(max, self)) |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Checks if self is included a specified range. |
|
||||
|
|
||||
:param: range Range |
|
||||
:param: strict If true, "<" is used for comparison |
|
||||
:returns: true if in range |
|
||||
*/ |
|
||||
func isIn (range: Range<Int>, strict: Bool = false) -> Bool { |
|
||||
if strict { |
|
||||
return range.startIndex < self && self < range.endIndex - 1 |
|
||||
} |
|
||||
|
|
||||
return range.startIndex <= self && self <= range.endIndex - 1 |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Checks if self is included in a closed interval. |
|
||||
|
|
||||
:param: interval Interval to check |
|
||||
:returns: true if in the interval |
|
||||
*/ |
|
||||
func isIn (interval: ClosedInterval<Int>) -> Bool { |
|
||||
return interval.contains(self) |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Checks if self is included in an half open interval. |
|
||||
|
|
||||
:param: interval Interval to check |
|
||||
:returns: true if in the interval |
|
||||
*/ |
|
||||
func isIn (interval: HalfOpenInterval<Int>) -> Bool { |
|
||||
return interval.contains(self) |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Returns an [Int] containing the digits in self. |
|
||||
|
|
||||
:return: Array of digits |
|
||||
*/ |
|
||||
func digits () -> [Int] { |
|
||||
var result = [Int]() |
|
||||
|
|
||||
for char in String(self) { |
|
||||
let string = String(char) |
|
||||
if let toInt = string.toInt() { |
|
||||
result.append(toInt) |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
return result |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Absolute value. |
|
||||
|
|
||||
:returns: abs(self) |
|
||||
*/ |
|
||||
func abs () -> Int { |
|
||||
return Swift.abs(self) |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Greatest common divisor of self and n. |
|
||||
|
|
||||
:param: n |
|
||||
:returns: GCD |
|
||||
*/ |
|
||||
func gcd (n: Int) -> Int { |
|
||||
return n == 0 ? self : n.gcd(self % n) |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Least common multiple of self and n |
|
||||
|
|
||||
:param: n |
|
||||
:returns: LCM |
|
||||
*/ |
|
||||
func lcm (n: Int) -> Int { |
|
||||
return (self * n).abs() / gcd(n) |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Computes the factorial of self |
|
||||
|
|
||||
:returns: Factorial |
|
||||
*/ |
|
||||
func factorial () -> Int { |
|
||||
return self == 0 ? 1 : self * (self - 1).factorial() |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Random integer between min and max (inclusive). |
|
||||
|
|
||||
:param: min Minimum value to return |
|
||||
:param: max Maximum value to return |
|
||||
:returns: Random integer |
|
||||
*/ |
|
||||
static func random(min: Int = 0, max: Int) -> Int { |
|
||||
return Int(arc4random_uniform(UInt32((max - min) + 1))) + min |
|
||||
} |
|
||||
|
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
NSTimeInterval conversion extensions |
|
||||
*/ |
|
||||
public extension Int { |
|
||||
|
|
||||
var years: NSTimeInterval { |
|
||||
return 365 * self.days |
|
||||
} |
|
||||
|
|
||||
var year: NSTimeInterval { |
|
||||
return self.years |
|
||||
} |
|
||||
|
|
||||
var days: NSTimeInterval { |
|
||||
return 24 * self.hours |
|
||||
} |
|
||||
|
|
||||
var day: NSTimeInterval { |
|
||||
return self.days |
|
||||
} |
|
||||
|
|
||||
var hours: NSTimeInterval { |
|
||||
return 60 * self.minutes |
|
||||
} |
|
||||
|
|
||||
var hour: NSTimeInterval { |
|
||||
return self.hours |
|
||||
} |
|
||||
|
|
||||
var minutes: NSTimeInterval { |
|
||||
return 60 * self.seconds |
|
||||
} |
|
||||
|
|
||||
var minute: NSTimeInterval { |
|
||||
return self.minutes |
|
||||
} |
|
||||
|
|
||||
var seconds: NSTimeInterval { |
|
||||
return NSTimeInterval(self) |
|
||||
} |
|
||||
|
|
||||
var second: NSTimeInterval { |
|
||||
return self.seconds |
|
||||
} |
|
||||
|
|
||||
} |
|
||||
@ -1,64 +0,0 @@ |
|||||
// |
|
||||
// NSArray.swift |
|
||||
// ExSwift |
|
||||
// |
|
||||
// Created by pNre on 10/06/14. |
|
||||
// Copyright (c) 2014 pNre. All rights reserved. |
|
||||
// |
|
||||
|
|
||||
import Foundation |
|
||||
|
|
||||
public extension NSArray { |
|
||||
|
|
||||
/** |
|
||||
Converts an NSArray object to an OutType[] array containing the items in the NSArray of type OutType. |
|
||||
|
|
||||
:returns: Array of Swift objects |
|
||||
*/ |
|
||||
func cast <OutType> () -> [OutType] { |
|
||||
var result = [OutType]() |
|
||||
|
|
||||
for item : AnyObject in self { |
|
||||
result += Ex.bridgeObjCObject(item) as [OutType] |
|
||||
} |
|
||||
|
|
||||
return result |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Flattens a multidimensional NSArray to an OutType[] array |
|
||||
containing the items in the NSArray that can be bridged from their ObjC type to OutType. |
|
||||
|
|
||||
:returns: Flattened array |
|
||||
*/ |
|
||||
func flatten <OutType> () -> [OutType] { |
|
||||
var result = [OutType]() |
|
||||
let reflection = reflect(self) |
|
||||
|
|
||||
for i in 0..<reflection.count { |
|
||||
result += Ex.bridgeObjCObject(reflection[i].1.value) as [OutType] |
|
||||
} |
|
||||
|
|
||||
return result |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Flattens a multidimensional NSArray to a [AnyObject]. |
|
||||
|
|
||||
:returns: Flattened array |
|
||||
*/ |
|
||||
func flattenAny () -> [AnyObject] { |
|
||||
var result = [AnyObject]() |
|
||||
|
|
||||
for item in self { |
|
||||
if let array = item as? NSArray { |
|
||||
result += array.flattenAny() |
|
||||
} else { |
|
||||
result.append(item) |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
return result |
|
||||
} |
|
||||
|
|
||||
} |
|
||||
@ -1,318 +0,0 @@ |
|||||
// |
|
||||
// File.swift |
|
||||
// ExSwift |
|
||||
// |
|
||||
// Created by Piergiuseppe Longo on 23/11/14. |
|
||||
// Copyright (c) 2014 pNre. All rights reserved. |
|
||||
// |
|
||||
|
|
||||
import Foundation |
|
||||
|
|
||||
public extension NSDate { |
|
||||
|
|
||||
// MARK: NSDate Manipulation |
|
||||
|
|
||||
/** |
|
||||
Returns a new NSDate object representing the date calculated by adding the amount specified to self date |
|
||||
|
|
||||
:param: seconds number of seconds to add |
|
||||
:param: minutes number of minutes to add |
|
||||
:param: hours number of hours to add |
|
||||
:param: days number of days to add |
|
||||
:param: weeks number of weeks to add |
|
||||
:param: months number of months to add |
|
||||
:param: years number of years to add |
|
||||
:returns: the NSDate computed |
|
||||
*/ |
|
||||
public func add(seconds: Int = 0, minutes: Int = 0, hours: Int = 0, days: Int = 0, weeks: Int = 0, months: Int = 0, years: Int = 0) -> NSDate { |
|
||||
var calendar = NSCalendar.currentCalendar() |
|
||||
|
|
||||
let version = floor(NSFoundationVersionNumber) |
|
||||
|
|
||||
if version <= NSFoundationVersionNumber10_9_2 { |
|
||||
var component = NSDateComponents() |
|
||||
component.setValue(seconds, forComponent: .CalendarUnitSecond) |
|
||||
|
|
||||
var date : NSDate! = calendar.dateByAddingComponents(component, toDate: self, options: nil)! |
|
||||
component = NSDateComponents() |
|
||||
component.setValue(minutes, forComponent: .CalendarUnitMinute) |
|
||||
date = calendar.dateByAddingComponents(component, toDate: date, options: nil)! |
|
||||
|
|
||||
component = NSDateComponents() |
|
||||
component.setValue(hours, forComponent: .CalendarUnitHour) |
|
||||
date = calendar.dateByAddingComponents(component, toDate: date, options: nil)! |
|
||||
|
|
||||
component = NSDateComponents() |
|
||||
component.setValue(days, forComponent: .CalendarUnitDay) |
|
||||
date = calendar.dateByAddingComponents(component, toDate: date, options: nil)! |
|
||||
|
|
||||
component = NSDateComponents() |
|
||||
component.setValue(weeks, forComponent: .CalendarUnitWeekOfMonth) |
|
||||
date = calendar.dateByAddingComponents(component, toDate: date, options: nil)! |
|
||||
|
|
||||
component = NSDateComponents() |
|
||||
component.setValue(months, forComponent: .CalendarUnitMonth) |
|
||||
date = calendar.dateByAddingComponents(component, toDate: date, options: nil)! |
|
||||
|
|
||||
component = NSDateComponents() |
|
||||
component.setValue(years, forComponent: .CalendarUnitYear) |
|
||||
date = calendar.dateByAddingComponents(component, toDate: date, options: nil)! |
|
||||
return date |
|
||||
} |
|
||||
|
|
||||
var date : NSDate! = calendar.dateByAddingUnit(.CalendarUnitSecond, value: seconds, toDate: self, options: nil) |
|
||||
date = calendar.dateByAddingUnit(.CalendarUnitMinute, value: minutes, toDate: date, options: nil) |
|
||||
date = calendar.dateByAddingUnit(.CalendarUnitDay, value: days, toDate: date, options: nil) |
|
||||
date = calendar.dateByAddingUnit(.CalendarUnitHour, value: hours, toDate: date, options: nil) |
|
||||
date = calendar.dateByAddingUnit(.CalendarUnitWeekOfMonth, value: weeks, toDate: date, options: nil) |
|
||||
date = calendar.dateByAddingUnit(.CalendarUnitMonth, value: months, toDate: date, options: nil) |
|
||||
date = calendar.dateByAddingUnit(.CalendarUnitYear, value: years, toDate: date, options: nil) |
|
||||
return date |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Returns a new NSDate object representing the date calculated by adding an amount of seconds to self date |
|
||||
|
|
||||
:param: seconds number of seconds to add |
|
||||
:returns: the NSDate computed |
|
||||
*/ |
|
||||
public func addSeconds (seconds: Int) -> NSDate { |
|
||||
return add(seconds: seconds) |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Returns a new NSDate object representing the date calculated by adding an amount of minutes to self date |
|
||||
|
|
||||
:param: minutes number of minutes to add |
|
||||
:returns: the NSDate computed |
|
||||
*/ |
|
||||
public func addMinutes (minutes: Int) -> NSDate { |
|
||||
return add(minutes: minutes) |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Returns a new NSDate object representing the date calculated by adding an amount of hours to self date |
|
||||
|
|
||||
:param: hours number of hours to add |
|
||||
:returns: the NSDate computed |
|
||||
*/ |
|
||||
public func addHours(hours: Int) -> NSDate { |
|
||||
return add(hours: hours) |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Returns a new NSDate object representing the date calculated by adding an amount of days to self date |
|
||||
|
|
||||
:param: days number of days to add |
|
||||
:returns: the NSDate computed |
|
||||
*/ |
|
||||
public func addDays(days: Int) -> NSDate { |
|
||||
return add(days: days) |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Returns a new NSDate object representing the date calculated by adding an amount of weeks to self date |
|
||||
|
|
||||
:param: weeks number of weeks to add |
|
||||
:returns: the NSDate computed |
|
||||
*/ |
|
||||
public func addWeeks(weeks: Int) -> NSDate { |
|
||||
return add(weeks: weeks) |
|
||||
} |
|
||||
|
|
||||
|
|
||||
/** |
|
||||
Returns a new NSDate object representing the date calculated by adding an amount of months to self date |
|
||||
|
|
||||
:param: months number of months to add |
|
||||
:returns: the NSDate computed |
|
||||
*/ |
|
||||
|
|
||||
public func addMonths(months: Int) -> NSDate { |
|
||||
return add(months: months) |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Returns a new NSDate object representing the date calculated by adding an amount of years to self date |
|
||||
|
|
||||
:param: years number of year to add |
|
||||
:returns: the NSDate computed |
|
||||
*/ |
|
||||
public func addYears(years: Int) -> NSDate { |
|
||||
return add(years: years) |
|
||||
} |
|
||||
|
|
||||
// MARK: Date comparison |
|
||||
|
|
||||
/** |
|
||||
Checks if self is after input NSDate |
|
||||
|
|
||||
:param: date NSDate to compare |
|
||||
:returns: True if self is after the input NSDate, false otherwise |
|
||||
*/ |
|
||||
public func isAfter(date: NSDate) -> Bool{ |
|
||||
return (self.compare(date) == NSComparisonResult.OrderedDescending) |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Checks if self is before input NSDate |
|
||||
|
|
||||
:param: date NSDate to compare |
|
||||
:returns: True if self is before the input NSDate, false otherwise |
|
||||
*/ |
|
||||
public func isBefore(date: NSDate) -> Bool{ |
|
||||
return (self.compare(date) == NSComparisonResult.OrderedAscending) |
|
||||
} |
|
||||
|
|
||||
|
|
||||
// MARK: Getter |
|
||||
|
|
||||
/** |
|
||||
Date year |
|
||||
*/ |
|
||||
public var year : Int { |
|
||||
get { |
|
||||
return getComponent(.CalendarUnitYear) |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Date month |
|
||||
*/ |
|
||||
public var month : Int { |
|
||||
get { |
|
||||
return getComponent(.CalendarUnitMonth) |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Date weekday |
|
||||
*/ |
|
||||
public var weekday : Int { |
|
||||
get { |
|
||||
return getComponent(.CalendarUnitWeekday) |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Date weekMonth |
|
||||
*/ |
|
||||
public var weekMonth : Int { |
|
||||
get { |
|
||||
return getComponent(.CalendarUnitWeekOfMonth) |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
|
|
||||
/** |
|
||||
Date days |
|
||||
*/ |
|
||||
public var days : Int { |
|
||||
get { |
|
||||
return getComponent(.CalendarUnitDay) |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Date hours |
|
||||
*/ |
|
||||
public var hours : Int { |
|
||||
|
|
||||
get { |
|
||||
return getComponent(.CalendarUnitHour) |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Date minuts |
|
||||
*/ |
|
||||
public var minutes : Int { |
|
||||
get { |
|
||||
return getComponent(.CalendarUnitMinute) |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Date seconds |
|
||||
*/ |
|
||||
public var seconds : Int { |
|
||||
get { |
|
||||
return getComponent(.CalendarUnitSecond) |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Returns the value of the NSDate component |
|
||||
|
|
||||
:param: component NSCalendarUnit |
|
||||
:returns: the value of the component |
|
||||
*/ |
|
||||
|
|
||||
public func getComponent (component : NSCalendarUnit) -> Int { |
|
||||
let calendar = NSCalendar.currentCalendar() |
|
||||
let components = calendar.components(component, fromDate: self) |
|
||||
|
|
||||
return components.valueForComponent(component) |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
extension NSDate: Strideable { |
|
||||
public func distanceTo(other: NSDate) -> NSTimeInterval { |
|
||||
return other - self |
|
||||
} |
|
||||
|
|
||||
public func advancedBy(n: NSTimeInterval) -> Self { |
|
||||
return self.dynamicType(timeIntervalSinceReferenceDate: self.timeIntervalSinceReferenceDate + n) |
|
||||
} |
|
||||
} |
|
||||
// MARK: Arithmetic |
|
||||
|
|
||||
func +(date: NSDate, timeInterval: Int) -> NSDate { |
|
||||
return date + NSTimeInterval(timeInterval) |
|
||||
} |
|
||||
|
|
||||
func -(date: NSDate, timeInterval: Int) -> NSDate { |
|
||||
return date - NSTimeInterval(timeInterval) |
|
||||
} |
|
||||
|
|
||||
func +=(inout date: NSDate, timeInterval: Int) { |
|
||||
date = date + timeInterval |
|
||||
} |
|
||||
|
|
||||
func -=(inout date: NSDate, timeInterval: Int) { |
|
||||
date = date - timeInterval |
|
||||
} |
|
||||
|
|
||||
func +(date: NSDate, timeInterval: Double) -> NSDate { |
|
||||
return date.dateByAddingTimeInterval(NSTimeInterval(timeInterval)) |
|
||||
} |
|
||||
|
|
||||
func -(date: NSDate, timeInterval: Double) -> NSDate { |
|
||||
return date.dateByAddingTimeInterval(NSTimeInterval(-timeInterval)) |
|
||||
} |
|
||||
|
|
||||
func +=(inout date: NSDate, timeInterval: Double) { |
|
||||
date = date + timeInterval |
|
||||
} |
|
||||
|
|
||||
func -=(inout date: NSDate, timeInterval: Double) { |
|
||||
date = date - timeInterval |
|
||||
} |
|
||||
|
|
||||
func -(date: NSDate, otherDate: NSDate) -> NSTimeInterval { |
|
||||
return date.timeIntervalSinceDate(otherDate) |
|
||||
} |
|
||||
|
|
||||
extension NSDate: Equatable { |
|
||||
} |
|
||||
|
|
||||
public func ==(lhs: NSDate, rhs: NSDate) -> Bool { |
|
||||
return lhs.compare(rhs) == NSComparisonResult.OrderedSame |
|
||||
} |
|
||||
|
|
||||
extension NSDate: Comparable { |
|
||||
} |
|
||||
|
|
||||
public func <(lhs: NSDate, rhs: NSDate) -> Bool { |
|
||||
return lhs.compare(rhs) == NSComparisonResult.OrderedAscending |
|
||||
} |
|
||||
@ -1,80 +0,0 @@ |
|||||
// |
|
||||
// Range.swift |
|
||||
// ExSwift |
|
||||
// |
|
||||
// Created by pNre on 04/06/14. |
|
||||
// Copyright (c) 2014 pNre. All rights reserved. |
|
||||
// |
|
||||
|
|
||||
import Foundation |
|
||||
|
|
||||
internal extension Range { |
|
||||
|
|
||||
/** |
|
||||
For each element in the range invokes function. |
|
||||
|
|
||||
:param: function Function to call |
|
||||
*/ |
|
||||
func times (function: () -> ()) { |
|
||||
each { (current: T) -> () in |
|
||||
function() |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
For each element in the range invokes function passing the element as argument. |
|
||||
|
|
||||
:param: function Function to invoke |
|
||||
*/ |
|
||||
func times (function: (T) -> ()) { |
|
||||
each (function) |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
For each element in the range invokes function passing the element as argument. |
|
||||
|
|
||||
:param: function Function to invoke |
|
||||
*/ |
|
||||
func each (function: (T) -> ()) { |
|
||||
for i in self { |
|
||||
function(i) |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Returns each element of the range in an array |
|
||||
|
|
||||
:returns: Each element of the range in an array |
|
||||
*/ |
|
||||
func toArray () -> [T] { |
|
||||
var result: [T] = [] |
|
||||
for i in self { |
|
||||
result.append(i) |
|
||||
} |
|
||||
return result |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Range of Int with random bounds between from and to (inclusive). |
|
||||
|
|
||||
:param: from Lower bound |
|
||||
:param: to Upper bound |
|
||||
:returns: Random range |
|
||||
*/ |
|
||||
static func random (from: Int, to: Int) -> Range<Int> { |
|
||||
let lowerBound = Int.random(min: from, max: to) |
|
||||
let upperBound = Int.random(min: lowerBound, max: to) |
|
||||
|
|
||||
return lowerBound...upperBound |
|
||||
} |
|
||||
|
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
* Operator == to compare 2 ranges first, second by start & end indexes. If first.startIndex is equal to |
|
||||
* second.startIndex and first.endIndex is equal to second.endIndex the ranges are considered equal. |
|
||||
*/ |
|
||||
public func == <U: ForwardIndexType> (first: Range<U>, second: Range<U>) -> Bool { |
|
||||
return first.startIndex == second.startIndex && |
|
||||
first.endIndex == second.endIndex |
|
||||
} |
|
||||
@ -1,244 +0,0 @@ |
|||||
// |
|
||||
// Sequence.swift |
|
||||
// ExSwift |
|
||||
// |
|
||||
// Created by Colin Eberhardt on 24/06/2014. |
|
||||
// Copyright (c) 2014 pNre. All rights reserved. |
|
||||
// |
|
||||
|
|
||||
import Foundation |
|
||||
|
|
||||
internal extension SequenceOf { |
|
||||
|
|
||||
/** |
|
||||
First element of the sequence. |
|
||||
|
|
||||
:returns: First element of the sequence if present |
|
||||
*/ |
|
||||
var first: T? { |
|
||||
var generator = self.generate() |
|
||||
return generator.next() |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Checks if call returns true for any element of self. |
|
||||
|
|
||||
:param: call Function to call for each element |
|
||||
:returns: True if call returns true for any element of self |
|
||||
*/ |
|
||||
func any (call: (T) -> Bool) -> Bool { |
|
||||
var generator = self.generate() |
|
||||
while let nextItem = generator.next() { |
|
||||
if call(nextItem) { |
|
||||
return true |
|
||||
} |
|
||||
} |
|
||||
return false |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Object at the specified index if exists. |
|
||||
|
|
||||
:param: index |
|
||||
:returns: Object at index in sequence, nil if index is out of bounds |
|
||||
*/ |
|
||||
func get (index: Int) -> T? { |
|
||||
var generator = self.generate() |
|
||||
for _ in 0..<(index - 1) { |
|
||||
generator.next() |
|
||||
} |
|
||||
return generator.next() |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Objects in the specified range. |
|
||||
|
|
||||
:param: range |
|
||||
:returns: Subsequence in range |
|
||||
*/ |
|
||||
func get (range: Range<Int>) -> SequenceOf<T> { |
|
||||
return self.skip(range.startIndex).take(range.endIndex - range.startIndex) |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Index of the first occurrence of item, if found. |
|
||||
|
|
||||
:param: item The item to search for |
|
||||
:returns: Index of the matched item or nil |
|
||||
*/ |
|
||||
func indexOf <U: Equatable> (item: U) -> Int? { |
|
||||
var index = 0 |
|
||||
for current in self { |
|
||||
if let equatable = current as? U { |
|
||||
if equatable == item { |
|
||||
return index |
|
||||
} |
|
||||
} |
|
||||
index++ |
|
||||
} |
|
||||
return nil |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Subsequence from n to the end of the sequence. |
|
||||
|
|
||||
:param: n Number of elements to skip |
|
||||
:returns: Sequence from n to the end |
|
||||
*/ |
|
||||
func skip (n: Int) -> SequenceOf<T> { |
|
||||
var generator = self.generate() |
|
||||
for _ in 0..<n { |
|
||||
generator.next() |
|
||||
} |
|
||||
return SequenceOf(generator) |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Filters the sequence only including items that match the test. |
|
||||
|
|
||||
:param: include Function invoked to test elements for inclusion in the sequence |
|
||||
:returns: Filtered sequence |
|
||||
*/ |
|
||||
func filter(include: (T) -> Bool) -> SequenceOf<T> { |
|
||||
return SequenceOf(lazy(self).filter(include)) |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Opposite of filter. |
|
||||
|
|
||||
:param: exclude Function invoked to test elements for exlcusion from the sequence |
|
||||
:returns: Filtered sequence |
|
||||
*/ |
|
||||
func reject (exclude: (T -> Bool)) -> SequenceOf<T> { |
|
||||
return self.filter { |
|
||||
return !exclude($0) |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Skips the elements in the sequence up until the condition returns false. |
|
||||
|
|
||||
:param: condition A function which returns a boolean if an element satisfies a given condition or not |
|
||||
:returns: Elements of the sequence starting with the element which does not meet the condition |
|
||||
*/ |
|
||||
func skipWhile(condition:(T) -> Bool) -> SequenceOf<T> { |
|
||||
var generator = self.generate() |
|
||||
var checkingGenerator = self.generate() |
|
||||
|
|
||||
var keepSkipping = true |
|
||||
|
|
||||
while keepSkipping { |
|
||||
var nextItem = checkingGenerator.next() |
|
||||
keepSkipping = nextItem != nil ? condition(nextItem!) : false |
|
||||
|
|
||||
if keepSkipping { |
|
||||
generator.next() |
|
||||
} |
|
||||
} |
|
||||
return SequenceOf(generator) |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Checks if self contains the item object. |
|
||||
|
|
||||
:param: item The item to search for |
|
||||
:returns: true if self contains item |
|
||||
*/ |
|
||||
func contains<T:Equatable> (item: T) -> Bool { |
|
||||
var generator = self.generate() |
|
||||
while let nextItem = generator.next() { |
|
||||
if nextItem as! T == item { |
|
||||
return true |
|
||||
} |
|
||||
} |
|
||||
return false |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Returns the first n elements from self. |
|
||||
|
|
||||
:param: n Number of elements to take |
|
||||
:returns: First n elements |
|
||||
*/ |
|
||||
func take (n: Int) -> SequenceOf<T> { |
|
||||
return SequenceOf(TakeSequence(self, n)) |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Returns the elements of the sequence up until an element does not meet the condition. |
|
||||
|
|
||||
:param: condition A function which returns a boolean if an element satisfies a given condition or not. |
|
||||
:returns: Elements of the sequence up until an element does not meet the condition |
|
||||
*/ |
|
||||
func takeWhile (condition:(T?) -> Bool) -> SequenceOf<T> { |
|
||||
return SequenceOf(TakeWhileSequence(self, condition)) |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Returns each element of the sequence in an array |
|
||||
|
|
||||
:returns: Each element of the sequence in an array |
|
||||
*/ |
|
||||
func toArray () -> [T] { |
|
||||
var result: [T] = [] |
|
||||
for item in self { |
|
||||
result.append(item) |
|
||||
} |
|
||||
return result |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
A sequence adapter that implements the 'take' functionality |
|
||||
*/ |
|
||||
public struct TakeSequence<S: SequenceType>: SequenceType { |
|
||||
private let sequence: S |
|
||||
private let n: Int |
|
||||
|
|
||||
public init(_ sequence: S, _ n: Int) { |
|
||||
self.sequence = sequence |
|
||||
self.n = n |
|
||||
} |
|
||||
|
|
||||
public func generate() -> GeneratorOf<S.Generator.Element> { |
|
||||
var count = 0 |
|
||||
var generator = self.sequence.generate() |
|
||||
return GeneratorOf<S.Generator.Element> { |
|
||||
count++ |
|
||||
if count > self.n { |
|
||||
return nil |
|
||||
} else { |
|
||||
return generator.next() |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
a sequence adapter that implements the 'takeWhile' functionality |
|
||||
*/ |
|
||||
public struct TakeWhileSequence<S: SequenceType>: SequenceType { |
|
||||
private let sequence: S |
|
||||
private let condition: (S.Generator.Element?) -> Bool |
|
||||
|
|
||||
public init(_ sequence:S, _ condition:(S.Generator.Element?) -> Bool) { |
|
||||
self.sequence = sequence |
|
||||
self.condition = condition |
|
||||
} |
|
||||
|
|
||||
public func generate() -> GeneratorOf<S.Generator.Element> { |
|
||||
var generator = self.sequence.generate() |
|
||||
var endConditionMet = false |
|
||||
return GeneratorOf<S.Generator.Element> { |
|
||||
let next: S.Generator.Element? = generator.next() |
|
||||
if !endConditionMet { |
|
||||
endConditionMet = !self.condition(next) |
|
||||
} |
|
||||
if endConditionMet { |
|
||||
return nil |
|
||||
} else { |
|
||||
return next |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
@ -1,403 +0,0 @@ |
|||||
// |
|
||||
// String.swift |
|
||||
// ExSwift |
|
||||
// |
|
||||
// Created by pNre on 03/06/14. |
|
||||
// Copyright (c) 2014 pNre. All rights reserved. |
|
||||
// |
|
||||
|
|
||||
import Foundation |
|
||||
|
|
||||
public extension String { |
|
||||
|
|
||||
/** |
|
||||
String length |
|
||||
*/ |
|
||||
var length: Int { return count(self) } |
|
||||
|
|
||||
/** |
|
||||
self.capitalizedString shorthand |
|
||||
*/ |
|
||||
var capitalized: String { return capitalizedString } |
|
||||
|
|
||||
/** |
|
||||
Returns the substring in the given range |
|
||||
|
|
||||
:param: range |
|
||||
:returns: Substring in range |
|
||||
*/ |
|
||||
subscript (range: Range<Int>) -> String? { |
|
||||
if range.startIndex < 0 || range.endIndex > self.length { |
|
||||
return nil |
|
||||
} |
|
||||
|
|
||||
let range = Range(start: advance(startIndex, range.startIndex), end: advance(startIndex, range.endIndex)) |
|
||||
|
|
||||
return self[range] |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Equivalent to at. Takes a list of indexes and returns an Array |
|
||||
containing the elements at the given indexes in self. |
|
||||
|
|
||||
:param: firstIndex |
|
||||
:param: secondIndex |
|
||||
:param: restOfIndexes |
|
||||
:returns: Charaters at the specified indexes (converted to String) |
|
||||
*/ |
|
||||
subscript (firstIndex: Int, secondIndex: Int, restOfIndexes: Int...) -> [String] { |
|
||||
return at([firstIndex, secondIndex] + restOfIndexes) |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Gets the character at the specified index as String. |
|
||||
If index is negative it is assumed to be relative to the end of the String. |
|
||||
|
|
||||
:param: index Position of the character to get |
|
||||
:returns: Character as String or nil if the index is out of bounds |
|
||||
*/ |
|
||||
subscript (index: Int) -> String? { |
|
||||
if let char = Array(self).get(index) { |
|
||||
return String(char) |
|
||||
} |
|
||||
|
|
||||
return nil |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Takes a list of indexes and returns an Array containing the elements at the given indexes in self. |
|
||||
|
|
||||
:param: indexes Positions of the elements to get |
|
||||
:returns: Array of characters (as String) |
|
||||
*/ |
|
||||
func at (indexes: Int...) -> [String] { |
|
||||
return indexes.map { self[$0]! } |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Takes a list of indexes and returns an Array containing the elements at the given indexes in self. |
|
||||
|
|
||||
:param: indexes Positions of the elements to get |
|
||||
:returns: Array of characters (as String) |
|
||||
*/ |
|
||||
func at (indexes: [Int]) -> [String] { |
|
||||
return indexes.map { self[$0]! } |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Returns an array of strings, each of which is a substring of self formed by splitting it on separator. |
|
||||
|
|
||||
:param: separator Character used to split the string |
|
||||
:returns: Array of substrings |
|
||||
*/ |
|
||||
func explode (separator: Character) -> [String] { |
|
||||
return split(self, isSeparator: { (element: Character) -> Bool in |
|
||||
return element == separator |
|
||||
}) |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Finds any match in self for pattern. |
|
||||
|
|
||||
:param: pattern Pattern to match |
|
||||
:param: ignoreCase true for case insensitive matching |
|
||||
:returns: Matches found (as [NSTextCheckingResult]) |
|
||||
*/ |
|
||||
func matches (pattern: String, ignoreCase: Bool = false) -> [NSTextCheckingResult]? { |
|
||||
|
|
||||
if let regex = ExSwift.regex(pattern, ignoreCase: ignoreCase) { |
|
||||
// Using map to prevent a possible bug in the compiler |
|
||||
return regex.matchesInString(self, options: nil, range: NSMakeRange(0, length)).map { $0 as! NSTextCheckingResult } |
|
||||
} |
|
||||
|
|
||||
return nil |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Check is string with this pattern included in string |
|
||||
|
|
||||
:param: pattern Pattern to match |
|
||||
:param: ignoreCase true for case insensitive matching |
|
||||
:returns: true if contains match, otherwise false |
|
||||
*/ |
|
||||
func containsMatch (pattern: String, ignoreCase: Bool = false) -> Bool? { |
|
||||
if let regex = ExSwift.regex(pattern, ignoreCase: ignoreCase) { |
|
||||
let range = NSMakeRange(0, count(self)) |
|
||||
return regex.firstMatchInString(self, options: .allZeros, range: range) != nil |
|
||||
} |
|
||||
|
|
||||
return nil |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Replace all pattern matches with another string |
|
||||
|
|
||||
:param: pattern Pattern to match |
|
||||
:param: replacementString string to replace matches |
|
||||
:param: ignoreCase true for case insensitive matching |
|
||||
:returns: true if contains match, otherwise false |
|
||||
*/ |
|
||||
func replaceMatches (pattern: String, withString replacementString: String, ignoreCase: Bool = false) -> String? { |
|
||||
if let regex = ExSwift.regex(pattern, ignoreCase: ignoreCase) { |
|
||||
let range = NSMakeRange(0, count(self)) |
|
||||
return regex.stringByReplacingMatchesInString(self, options: .allZeros, range: range, withTemplate: replacementString) |
|
||||
} |
|
||||
|
|
||||
return nil |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Inserts a substring at the given index in self. |
|
||||
|
|
||||
:param: index Where the new string is inserted |
|
||||
:param: string String to insert |
|
||||
:returns: String formed from self inserting string at index |
|
||||
*/ |
|
||||
func insert (var index: Int, _ string: String) -> String { |
|
||||
// Edge cases, prepend and append |
|
||||
if index > length { |
|
||||
return self + string |
|
||||
} else if index < 0 { |
|
||||
return string + self |
|
||||
} |
|
||||
|
|
||||
return self[0..<index]! + string + self[index..<length]! |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Strips the specified characters from the beginning of self. |
|
||||
|
|
||||
:returns: Stripped string |
|
||||
*/ |
|
||||
func trimmedLeft (characterSet set: NSCharacterSet = NSCharacterSet.whitespaceAndNewlineCharacterSet()) -> String { |
|
||||
if let range = rangeOfCharacterFromSet(set.invertedSet) { |
|
||||
return self[range.startIndex..<endIndex] |
|
||||
} |
|
||||
|
|
||||
return "" |
|
||||
} |
|
||||
|
|
||||
@availability(*, unavailable, message="use 'trimmedLeft' instead") func ltrimmed (set: NSCharacterSet = NSCharacterSet.whitespaceAndNewlineCharacterSet()) -> String { |
|
||||
return trimmedLeft(characterSet: set) |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Strips the specified characters from the end of self. |
|
||||
|
|
||||
:returns: Stripped string |
|
||||
*/ |
|
||||
func trimmedRight (characterSet set: NSCharacterSet = NSCharacterSet.whitespaceAndNewlineCharacterSet()) -> String { |
|
||||
if let range = rangeOfCharacterFromSet(set.invertedSet, options: NSStringCompareOptions.BackwardsSearch) { |
|
||||
return self[startIndex..<range.endIndex] |
|
||||
} |
|
||||
|
|
||||
return "" |
|
||||
} |
|
||||
|
|
||||
@availability(*, unavailable, message="use 'trimmedRight' instead") func rtrimmed (set: NSCharacterSet = NSCharacterSet.whitespaceAndNewlineCharacterSet()) -> String { |
|
||||
return trimmedRight(characterSet: set) |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Strips whitespaces from both the beginning and the end of self. |
|
||||
|
|
||||
:returns: Stripped string |
|
||||
*/ |
|
||||
func trimmed () -> String { |
|
||||
return trimmedLeft().trimmedRight() |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Costructs a string using random chars from a given set. |
|
||||
|
|
||||
:param: length String length. If < 1, it's randomly selected in the range 0..16 |
|
||||
:param: charset Chars to use in the random string |
|
||||
:returns: Random string |
|
||||
*/ |
|
||||
static func random (var length len: Int = 0, charset: String = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789") -> String { |
|
||||
|
|
||||
if len < 1 { |
|
||||
len = Int.random(max: 16) |
|
||||
} |
|
||||
|
|
||||
var result = String() |
|
||||
let max = charset.length - 1 |
|
||||
|
|
||||
len.times { |
|
||||
result += charset[Int.random(min: 0, max: max)]! |
|
||||
} |
|
||||
|
|
||||
return result |
|
||||
|
|
||||
} |
|
||||
|
|
||||
|
|
||||
/** |
|
||||
Parses a string containing a double numerical value into an optional double if the string is a well formed number. |
|
||||
|
|
||||
:returns: A double parsed from the string or nil if it cannot be parsed. |
|
||||
*/ |
|
||||
func toDouble() -> Double? { |
|
||||
|
|
||||
let scanner = NSScanner(string: self) |
|
||||
var double: Double = 0 |
|
||||
|
|
||||
if scanner.scanDouble(&double) { |
|
||||
return double |
|
||||
} |
|
||||
|
|
||||
return nil |
|
||||
|
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Parses a string containing a float numerical value into an optional float if the string is a well formed number. |
|
||||
|
|
||||
:returns: A float parsed from the string or nil if it cannot be parsed. |
|
||||
*/ |
|
||||
func toFloat() -> Float? { |
|
||||
|
|
||||
let scanner = NSScanner(string: self) |
|
||||
var float: Float = 0 |
|
||||
|
|
||||
if scanner.scanFloat(&float) { |
|
||||
return float |
|
||||
} |
|
||||
|
|
||||
return nil |
|
||||
|
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Parses a string containing a non-negative integer value into an optional UInt if the string is a well formed number. |
|
||||
|
|
||||
:returns: A UInt parsed from the string or nil if it cannot be parsed. |
|
||||
*/ |
|
||||
func toUInt() -> UInt? { |
|
||||
if let val = self.trimmed().toInt() { |
|
||||
if val < 0 { |
|
||||
return nil |
|
||||
} |
|
||||
return UInt(val) |
|
||||
} |
|
||||
|
|
||||
return nil |
|
||||
} |
|
||||
|
|
||||
|
|
||||
/** |
|
||||
Parses a string containing a boolean value (true or false) into an optional Bool if the string is a well formed. |
|
||||
|
|
||||
:returns: A Bool parsed from the string or nil if it cannot be parsed as a boolean. |
|
||||
*/ |
|
||||
func toBool() -> Bool? { |
|
||||
let text = self.trimmed().lowercaseString |
|
||||
if text == "true" || text == "false" || text == "yes" || text == "no" { |
|
||||
return (text as NSString).boolValue |
|
||||
} |
|
||||
|
|
||||
return nil |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Parses a string containing a date into an optional NSDate if the string is a well formed. |
|
||||
The default format is yyyy-MM-dd, but can be overriden. |
|
||||
|
|
||||
:returns: A NSDate parsed from the string or nil if it cannot be parsed as a date. |
|
||||
*/ |
|
||||
func toDate(format : String? = "yyyy-MM-dd") -> NSDate? { |
|
||||
let text = self.trimmed().lowercaseString |
|
||||
var dateFmt = NSDateFormatter() |
|
||||
dateFmt.timeZone = NSTimeZone.defaultTimeZone() |
|
||||
if let fmt = format { |
|
||||
dateFmt.dateFormat = fmt |
|
||||
} |
|
||||
return dateFmt.dateFromString(text) |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Parses a string containing a date and time into an optional NSDate if the string is a well formed. |
|
||||
The default format is yyyy-MM-dd hh-mm-ss, but can be overriden. |
|
||||
|
|
||||
:returns: A NSDate parsed from the string or nil if it cannot be parsed as a date. |
|
||||
*/ |
|
||||
func toDateTime(format : String? = "yyyy-MM-dd hh-mm-ss") -> NSDate? { |
|
||||
return toDate(format: format) |
|
||||
} |
|
||||
|
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Repeats the string first n times |
|
||||
*/ |
|
||||
public func * (first: String, n: Int) -> String { |
|
||||
|
|
||||
var result = String() |
|
||||
|
|
||||
n.times { |
|
||||
result += first |
|
||||
} |
|
||||
|
|
||||
return result |
|
||||
|
|
||||
} |
|
||||
|
|
||||
// Pattern matching using a regular expression |
|
||||
public func =~ (string: String, pattern: String) -> Bool { |
|
||||
|
|
||||
let regex = ExSwift.regex(pattern, ignoreCase: false)! |
|
||||
let matches = regex.numberOfMatchesInString(string, options: nil, range: NSMakeRange(0, string.length)) |
|
||||
|
|
||||
return matches > 0 |
|
||||
|
|
||||
} |
|
||||
|
|
||||
// Pattern matching using a regular expression |
|
||||
public func =~ (string: String, regex: NSRegularExpression) -> Bool { |
|
||||
|
|
||||
let matches = regex.numberOfMatchesInString(string, options: nil, range: NSMakeRange(0, string.length)) |
|
||||
|
|
||||
return matches > 0 |
|
||||
|
|
||||
} |
|
||||
|
|
||||
// This version also allowes to specify case sentitivity |
|
||||
public func =~ (string: String, options: (pattern: String, ignoreCase: Bool)) -> Bool { |
|
||||
|
|
||||
if let matches = ExSwift.regex(options.pattern, ignoreCase: options.ignoreCase)?.numberOfMatchesInString(string, options: nil, range: NSMakeRange(0, string.length)) { |
|
||||
return matches > 0 |
|
||||
} |
|
||||
|
|
||||
return false |
|
||||
|
|
||||
} |
|
||||
|
|
||||
// Match against all the alements in an array of String |
|
||||
public func =~ (strings: [String], pattern: String) -> Bool { |
|
||||
|
|
||||
let regex = ExSwift.regex(pattern, ignoreCase: false)! |
|
||||
|
|
||||
return strings.all { $0 =~ regex } |
|
||||
|
|
||||
} |
|
||||
|
|
||||
public func =~ (strings: [String], options: (pattern: String, ignoreCase: Bool)) -> Bool { |
|
||||
|
|
||||
return strings.all { $0 =~ options } |
|
||||
|
|
||||
} |
|
||||
|
|
||||
// Match against any element in an array of String |
|
||||
public func |~ (strings: [String], pattern: String) -> Bool { |
|
||||
|
|
||||
let regex = ExSwift.regex(pattern, ignoreCase: false)! |
|
||||
|
|
||||
return strings.any { $0 =~ regex } |
|
||||
|
|
||||
} |
|
||||
|
|
||||
public func |~ (strings: [String], options: (pattern: String, ignoreCase: Bool)) -> Bool { |
|
||||
|
|
||||
return strings.any { $0 =~ options } |
|
||||
|
|
||||
} |
|
||||
@ -0,0 +1,67 @@ |
|||||
|
// |
||||
|
// Created by Marco Schmickler on 25.01.15. |
||||
|
// Copyright (c) 2015 Marco Schmickler. All rights reserved. |
||||
|
// |
||||
|
|
||||
|
import Foundation |
||||
|
import UIKit |
||||
|
|
||||
|
public extension UIView { |
||||
|
func removeAllSubViews() { |
||||
|
for subView: UIView in subviews { |
||||
|
subView.removeFromSuperview(); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
public extension UIViewController { |
||||
|
|
||||
|
func findControllerInHierachy<T where T:UIViewController>(_: T.Type) -> T? { |
||||
|
var currentVC = self |
||||
|
while let parentVC = currentVC.parentViewController { |
||||
|
print("comparing \(parentVC) to \(T.description())") |
||||
|
if let result = parentVC as? T { |
||||
|
// (XXX) |
||||
|
return result |
||||
|
} |
||||
|
currentVC = parentVC |
||||
|
} |
||||
|
return nil |
||||
|
} |
||||
|
|
||||
|
func findChildController<T>(my: T.Type) -> T? { |
||||
|
for child in childViewControllers { |
||||
|
if let result = child as? T { |
||||
|
// (XXX) |
||||
|
return result |
||||
|
} |
||||
|
if let childControl = child as? UIViewController { |
||||
|
if let found = childControl.findChildController(my) { |
||||
|
return found; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
return nil |
||||
|
} |
||||
|
|
||||
|
func removeAllConstraints(otherView: UIView) { |
||||
|
var cons = [NSLayoutConstraint]() |
||||
|
for con:NSLayoutConstraint in self.view.constraints { |
||||
|
if (con.firstItem as? UIView == otherView || con.secondItem as? UIView == otherView) { |
||||
|
cons.append(con) |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
view.removeConstraints(cons) |
||||
|
otherView.removeConstraints(otherView.constraints); |
||||
|
|
||||
|
otherView.translatesAutoresizingMaskIntoConstraints = true; |
||||
|
} |
||||
|
|
||||
|
func embedChildViewController(vc: UIViewController, inView: UIView) { |
||||
|
vc.view.frame = inView.bounds; |
||||
|
addChildViewController(vc); |
||||
|
inView.removeAllSubViews(); |
||||
|
inView.addSubview(vc.view); |
||||
|
} |
||||
|
} |
||||
@ -1,48 +0,0 @@ |
|||||
// |
|
||||
// AlamofireSwiftyJSON.swift |
|
||||
// AlamofireSwiftyJSON |
|
||||
// |
|
||||
// Created by Pinglin Tang on 14-9-22. |
|
||||
// Copyright (c) 2014 SwiftyJSON. All rights reserved. |
|
||||
// |
|
||||
|
|
||||
import Foundation |
|
||||
import Alamofire |
|
||||
import SwiftyJSON |
|
||||
|
|
||||
// MARK: - Request for Swift JSON |
|
||||
|
|
||||
extension Request { |
|
||||
/** |
|
||||
Adds a handler to be called once the request has finished. |
|
||||
:param: completionHandler A closure to be executed once the request has finished. The closure takes 4 arguments: the URL request, the URL response, if one was received, the SwiftyJSON enum, if one could be created from the URL response and data, and any error produced while creating the SwiftyJSON enum. |
|
||||
:returns: The request. |
|
||||
*/ |
|
||||
public func responseSwiftyJSON(completionHandler: (NSURLRequest, NSHTTPURLResponse?, SwiftyJSON.JSON, NSError?) -> Void) -> Self { |
|
||||
return responseSwiftyJSON(queue: nil, options: NSJSONReadingOptions.AllowFragments, completionHandler: completionHandler) |
|
||||
} |
|
||||
/** |
|
||||
Adds a handler to be called once the request has finished. |
|
||||
:param: queue The queue on which the completion handler is dispatched. |
|
||||
:param: options The JSON serialization reading options. `.AllowFragments` by default. |
|
||||
:param: completionHandler A closure to be executed once the request has finished. The closure takes 4 arguments: the URL request, the URL response, if one was received, the SwiftyJSON enum, if one could be created from the URL response and data, and any error produced while creating the SwiftyJSON enum. |
|
||||
:returns: The request. |
|
||||
*/ |
|
||||
public func responseSwiftyJSON(queue: dispatch_queue_t? = nil, options: NSJSONReadingOptions = .AllowFragments, completionHandler: (NSURLRequest, NSHTTPURLResponse?, JSON, NSError?) -> Void) -> Self { |
|
||||
return response(queue: queue, serializer: Request.JSONResponseSerializer(options: options), completionHandler: { |
|
||||
(request, response, object, error) -> Void in |
|
||||
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), { |
|
||||
var responseJSON: JSON |
|
||||
if error != nil || object == nil { |
|
||||
responseJSON = JSON.nullJSON |
|
||||
} else { |
|
||||
responseJSON = SwiftyJSON.JSON(object!) |
|
||||
} |
|
||||
dispatch_async(queue ?? dispatch_get_main_queue(), { |
|
||||
completionHandler(self.request, self.response, responseJSON, error) |
|
||||
}) |
|
||||
}) |
|
||||
}) |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
@ -0,0 +1,16 @@ |
|||||
|
// |
||||
|
// Created by Marco Schmickler on 15.07.15. |
||||
|
// Copyright (c) 2015 Marco Schmickler. All rights reserved. |
||||
|
// |
||||
|
|
||||
|
import Foundation |
||||
|
|
||||
|
public extension String { |
||||
|
func beginsWith (str: String) -> Bool { |
||||
|
return hasPrefix(str) |
||||
|
} |
||||
|
|
||||
|
func endsWith (str: String) -> Bool { |
||||
|
return hasSuffix(str) |
||||
|
} |
||||
|
} |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue