A Swift library for defining strong password generation rules
Switch branches/tags
Nothing to show
Clone or download
Sam-Spencer and mattt Update README.md (#3)
Fixed a typo
Latest commit a602254 Aug 11, 2018
Type Name Latest commit message Commit time
Failed to load latest commit information.
PasswordRules.xcodeproj Initial commit Jul 30, 2018
Sources/PasswordRules Initial commit Jul 30, 2018
Tests Initial commit Jul 30, 2018
.gitignore Initial commit Jul 30, 2018
LICENSE.md Initial commit Jul 30, 2018
Package.swift Initial commit Jul 30, 2018
README.md Update README.md (#3) Aug 11, 2018



A Swift library for defining strong password generator rules.

This functionality is discussed in the NSHipster article Password Rules / UIText​Input​Password​Rules.


  • Swift 4.0+


Swift Package Manager

Add the PasswordRules package to your target dependencies in Package.swift:

import PackageDescription

let package = Package(
  name: "YourProject",
  dependencies: [
        url: "https://github.com/NSHipster/PasswordRules",
        from: "1.0.0"

Then run the swift build command to build your project.


To use PasswordRules in your Xcode project using Carthage, specify it in Cartfile:

github "NSHipster/PasswordRules" ~> 1.0.0

Then run the carthage update command to build the framework, and drag the built PasswordRules.framework into your Xcode project.


Define an array of PasswordRules cases and use the descriptor(for:) method to create a string representation:

import PasswordRules

let rules: [PasswordRule] = [ .required(.upper),
                              .minLength(20) ]

let descriptor = PasswordRule.descriptor(for: rules)
// "required: upper; required: lower; required: special; minlength: 20;"

Initialize a UITextInputPasswordRules object using the descriptor and pass that to the passwordRules property of a secure text field:

import UIKit

guard #available(iOS 12, *) else {

self.passwordTextField.passwordRules =
    UITextInputPasswordRules(descriptor: descriptor)




NSHipster (@NSHipster)