[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-7037":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":15,"stars7d":15,"stars30d":16,"stars90d":15,"forks30d":15,"starsTrendScore":15,"compositeScore":17,"rankGlobal":9,"rankLanguage":9,"license":18,"archived":19,"fork":19,"defaultBranch":20,"hasWiki":21,"hasPages":19,"topics":22,"createdAt":9,"pushedAt":9,"updatedAt":30,"readmeContent":31,"aiSummary":32,"trendingCount":15,"starSnapshotCount":15,"syncStatus":33,"lastSyncTime":34,"discoverSource":35},7037,"EZSwiftExtensions","Esqarrouth\u002FEZSwiftExtensions","Esqarrouth",":smirk: How Swift standard types and classes were supposed to work.",null,"Swift",2981,377,80,25,0,1,59.83,"MIT License",false,"master",true,[23,24,25,26,27,28,29],"carthage","cocoapods","exswift","extension","swift","swift-extensions","uikit","2026-06-12 04:00:32","# EZSwiftExtensions\n\n[![Carthage compatible](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FCarthage-compatible-4BC51D.svg?style=flat)](https:\u002F\u002Fgithub.com\u002FCarthage\u002FCarthage)\n[![CocoaPods Compatible](https:\u002F\u002Fimg.shields.io\u002Fcocoapods\u002Fv\u002FEZSwiftExtensions.svg)](https:\u002F\u002Fimg.shields.io\u002Fcocoapods\u002Fv\u002FEZSwiftExtensions.svg)  \n[![License](https:\u002F\u002Fimg.shields.io\u002Fcocoapods\u002Fl\u002FEZSwiftExtensions.svg?style=flat)](https:\u002F\u002Fcocoapods.org\u002Fpods\u002FEZSwiftExtensions)\n[![Platform](https:\u002F\u002Fimg.shields.io\u002Fcocoapods\u002Fp\u002FEZSwiftExtensions.svg?style=flat)](http:\u002F\u002Fcocoapods.org\u002Fpods\u002FEZSwiftExtensions)\n[![Language](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fswift-4.0-orange.svg)](http:\u002F\u002Fswift.org)\n[![Language](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fswift-3.0-orange.svg)](http:\u002F\u002Fswift.org)\n[![Language](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fswift-2.3-orange.svg)](http:\u002F\u002Fswift.org)\n\n\u003Cp>\n\u003Ca href=\"http:\u002F\u002Fcocoapods.org\u002Fpods\u002FEZSwiftExtensions\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fcocoapods\u002Fat\u002FEZSwiftExtensions.svg?label=Apps%20Using%20EZSwiftExtensions&colorB=28B9FE\">\u003C\u002Fa>\n\u003Ca href=\"http:\u002F\u002Fcocoapods.org\u002Fpods\u002FEZSwiftExtensions\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fcocoapods\u002Fdt\u002FEZSwiftExtensions.svg?label=Total%20Downloads&colorB=28B9FE\">\u003C\u002Fa>\n\u003Ca href=\"http:\u002F\u002Fcocoapods.org\u002Fpods\u002FEZSwiftExtensions\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fcocoapods\u002Fdm\u002FEZSwiftExtensions.svg?label=Downloads&colorB=28B9FE\">\u003C\u002Fa>\n\u003C\u002Fp>\n\n[![Build Status](https:\u002F\u002Ftravis-ci.org\u002Fgoktugyil\u002FEZSwiftExtensions.svg?branch=master)](https:\u002F\u002Ftravis-ci.org\u002Fgoktugyil\u002FEZSwiftExtensions)\n[![codecov.io](https:\u002F\u002Fcodecov.io\u002Fgh\u002Fgoktugyil\u002FEZSwiftExtensions\u002Fbranch\u002Fmaster\u002Fgraphs\u002Fbadge.svg)](https:\u002F\u002Fcodecov.io\u002Fgh\u002Fgoktugyil\u002FEZSwiftExtensions\u002Fbranch\u002Fmaster)\n[![MIT](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-red.svg)](https:\u002F\u002Fopensource.org\u002Flicenses\u002FMIT)\n\n\u003Cimg src=\"charizard.png\" width=\"200\">\n\nHow Swift standard types and classes were supposed to work. A collection of useful extensions for the Swift Standard Library, Foundation, and UIKit.\n\nJoin our online chat at [![Gitter](https:\u002F\u002Fbadges.gitter.im\u002FgitterHQ\u002Fgitter.svg)](https:\u002F\u002Fgitter.im\u002FEZSwiftExtensions\u002FLobby)\n- [Full Documentation via CocoaDocs](http:\u002F\u002Fcocoadocs.org\u002Fdocsets\u002FEZSwiftExtensions\u002F)\n\n## Example Usage\n\nEasily get an object at a specified index:\n``` swift\nvar myArray = [\"charmander\",\"bulbasaur\",\"squirtle\"]\nprint(myArray.get(1)) \u002F\u002F \"bulbasaur\"\n```\nEasily access a random element:\n\n``` swift\nvar myArray = [\"charmander\",\"bulbasaur\",\"squirtle\"]\nprint(myArray.random()) \u002F\u002F bulbasaur or something else\n```\n\nEasily find the indexes of an object:\n``` swift\nvar myArray = [\"charmander\",\"bulbasaur\",\"squirtle\",\"charmander\"]\nprint(myArray.indexesOf(\"charmander\")) \u002F\u002F [0,3]\n```\nEasily check if an array contains another array:\n``` swift\nvar myArray = [\"charmander\",\"bulbasaur\",\"squirtle\"]\nprint(myArray.containsArray([\"charmander\",\"bulbasaur\"])) \u002F\u002F true\nprint(myArray.containsArray([\"string\"])) \u002F\u002F false\n```\nBlock Objects\nThese objects use completion blocks instead of selectors, taken from: CEMKit-Swift\nEasily initialize a BlockButton:\n``` swift\n\nlet button = BlockButton(x: 0, y: 0, w: 100, h: 100) { (sender) -> Void in\n    print(\"Block button clicked!\")\n}\nlet button1 = BlockButton(x: 0, y: 0, w: 100, h: 100)\nbutton1.addAction { (sender) -> Void in\n    print(\"Block button clicked!\")\n}\n\n\u002F\u002F There are also BlockWebView, BlockTap, BlockPan, BlockSwipe, BlockPinch, BlockLongPress\n```\n\nEasily convert between different types:\n``` swift\nvar myCGFloat = myInt.toCGFloat\nvar myString = myInt.toString\nvar myDouble = myString.toDouble\nvar myInt = myDouble.toInt\n```\nEasily toggle it:\n``` swift\nvar myBool: Bool = true\nprint(myBool.toggle()) \u002F\u002F false\n```\nEasily initialize your objects:\n``` swift\nlet myView = UIView(x: 0, y: 0, w: 100, h: 100)\nprint(myView.frame) \u002F\u002F (0.0, 0.0, 100.0, 100.0)\n```\nEasily access your ViewController on top of your view stack:\n``` swift\nez.topMostViewController?.presentViewController(myAlertController, animated: true, completion: nil)\n\u002F\u002F topMostViewController is your rootViewController\n\u002F\u002F Intended for showing small VCs like UIAlertControllerstring.length, string.capitalizefirst, string.trim, string.isemail, \n```\nEasily initialize your colors:\n``` swift\nlet myColor = UIColor(r: 100, g: 100, b: 100) \u002F\u002F Default alpha is 1\n```\nEasily run block of codes after a certain delay:\n``` swift\nTimer.runThisAfterDelay(seconds: 2) { () -> () in\n    print(\"Prints this 2 seconds later in main queue\")\n}\n```\nEasily run code every seconds:\n``` swift\nvar count = 0\nTimer.runThisEvery(seconds: 1) { (timer) -> Void in\n    print(\"Will print every second\")\n    if count == 3 {\n        timer?.invalidate()\n    }\n    count += 1\n}\n```\nEasily access your projects version and build numbers:\n``` swift\nprint(ez.appVersion) \u002F\u002F 0.3\nprint(ez.appBuild) \u002F\u002F 7\nprint(ez.appVersionAndBuild) \u002F\u002F v0.3(7)\n\nEasily track screen shots:\nez.detectScreenShot { () -> () in\n    print(\"User took a screen shot\")\n}\n```\n\n## Installation\n\n### Manually (~10 seconds)\n\n1. Download and drop '\u002FSources' in your project.  \n2. Congratulations!  \n\n### Install via CocoaPods (~10 seconds)\n\nYou can use [CocoaPods](http:\u002F\u002Fcocoapods.org\u002F) to install `EZSwiftExtensions` by adding it to your `Podfile`:\n\n```ruby\nplatform :ios, '8.0'\nuse_frameworks!\npod 'EZSwiftExtensions' #Stable release for Swift 3.0\n\npod 'EZSwiftExtensions', :git => 'https:\u002F\u002Fgithub.com\u002Fgoktugyil\u002FEZSwiftExtensions.git' #Latest release for Swift 3.0\npod 'EZSwiftExtensions', :git => 'https:\u002F\u002Fgithub.com\u002Fgoktugyil\u002FEZSwiftExtensions.git', :branch => 'Swift2.3' #For Swift 2.3\npod 'EZSwiftExtensions', '~> 1.6' #For Swift 2.2\n```\n\nTo get the full benefits import `EZSwiftExtensions` wherever you import UIKit\n\n``` swift\nimport UIKit\nimport EZSwiftExtensions\n```\n\n### Install via [Carthage](https:\u002F\u002Fgithub.com\u002FCarthage\u002FCarthage)\n\nCreate a `Cartfile` that lists the framework and run `carthage bootstrap`. Follow the [instructions](https:\u002F\u002Fgithub.com\u002FCarthage\u002FCarthage#if-youre-building-for-ios) to add `$(SRCROOT)\u002FCarthage\u002FBuild\u002FiOS\u002FEZSwiftExtensions.framework` to an iOS project.\n\n```\ngithub \"goktugyil\u002FEZSwiftExtensions\"\n```\n\n## Requirements\n\n- Swift 2 or later\n\n## Possible features\n\n- More extensions! Please if there is an extension you are constantly using, send a pull request now!\n- Fancy pictures and jpgs in documentation.\n- Documentations inside code \n- List of contents inside readme\n- Completing `TODO`s in source code.\n- OSX compatibility and add here https:\u002F\u002Fgithub.com\u002FAndrewSB\u002Fawesome-osx\n\n## Sources Used\n\n- [ExSwift by pNre](https:\u002F\u002Fgithub.com\u002FpNre\u002FExSwift)\n- [SKTUtils by raywenderlich](https:\u002F\u002Fgithub.com\u002Fraywenderlich\u002FSKTUtils)\n- [CEMKit-Swift by cemolcay](https:\u002F\u002Fgithub.com\u002Fcemolcay\u002FCEMKit-Swift)\n- [SwiftySwift by adeca](https:\u002F\u002Fgithub.com\u002Fadeca\u002FSwiftySwift)\n- [Geometry by artman](https:\u002F\u002Fgithub.com\u002Fartman\u002FGeometry)\n- [Swift-Extensions by vitkuzmenko](https:\u002F\u002Fgithub.com\u002Fvitkuzmenko\u002FSwift-Extensions)\n- [SwiftTweetGettr by jmenter](https:\u002F\u002Fgithub.com\u002Fjmenter\u002FSwiftTweetGettr)\n- [Basics by dennisweissmann](https:\u002F\u002Fgithub.com\u002Fdennisweissmann\u002FDeviceKit)\n- [toNumber by Mamesoft](https:\u002F\u002Fgithub.com\u002FMamesoft\u002FtoNumber)\n- [RBResizer by hcatlin](https:\u002F\u002Fgist.github.com\u002Fhcatlin\u002F180e81cd961573e3c54d)\n\nAnd countless gists and stackoverflow answers.\n\n## License\nEZSwiftExtensions is available under the MIT license. See the [LICENSE file](https:\u002F\u002Fgithub.com\u002Fgoktugyil\u002FEZSwiftExtensions\u002Fblob\u002Fmaster\u002FLICENSE).\n\n## Keywords\nswift, extension, uikit, exswift, foundation, library, framework, tool\n","EZSwiftExtensions 是一个旨在增强 Swift 标准类型和类功能的扩展库。它为 Swift 标准库、Foundation 和 UIKit 提供了一系列实用的扩展方法，如简化数组操作（获取指定索引元素、随机访问元素、查找所有匹配项的索引等），以及通过闭包而非选择器初始化 UI 元素等功能。这些特性使得开发者能够以更简洁、直观的方式编写代码，特别适用于需要频繁使用基础数据结构或界面组件的 iOS\u002FmacOS 应用开发场景中。项目遵循 MIT 许可协议，并支持 Carthage 和 CocoaPods 两种集成方式，方便快捷地加入到现有工程当中。",2,"2026-06-11 03:10:13","top_language"]