🪶 Lightweight, Swift-y looking code for modern SwiftUI developers
🧩 Useful methods and properties written in native Swift
⚠️ Note: This package is still under development and its contents are freely subject to change.
🚧 Wiki under construction. Read below to get started!
What is FoundationPlus?
FoundationPlus is a suite of basic Swift extensions that help speed up the process of app development, and help make your code look nicer. Functions that you’ll normally need, like methods to check the app’s version, get the current day of week, and so on, can have convoluted code. FoundationPlus simplifies these with built-in extensions.
// 😴 Before
let interval = TimeInterval(9945)
// ✨ After
let interval = 2.hours + 45.minutes + 45.seconds
// 😴 Before
if let value = optionalValue {
myVar = value
} else {
myVar = nil
}
// ✨ After
myVar =? optionalValue
// 😴 Before
if array.count >= 5 {
myVar = array[4]
}
// ✨ After
myVar = array[safe: 4]
let date = Date()
let dateFormatted = "The current time is \(date.hour) : \(date.minute)."
Get a date moved forward to right before midnight:
let thisEvening = date.atMidnight
Get formatted versions of the date:
print(date.shorthand) // 6/7/22
print(date.longhand) // Tuesday, June 07, 2022
Subtract dates and get a TimeInterval:
let timeBetween = laterDate - earlierDate
Get the next/preview occurence of a specific weekday:
let nextTuesday = Date().next(.tuesday)
let lastWednesday = Date().previous(.wednesday, considerToday: false)
Get a string representing how long it’s been since the Date:
print(lastWednesday.timeAgoSince()) // 2 days ago
Array extensions
Safely subscript arrays, and even wrap array indices:
let myString = ["a", "b", "c", "d"]
let myString: String = myStrings[safe: 5] ?? "-" // "-"
let myString2: String = myString[wrap: 5] // "b"
Use new operators on arrays:
var array: [1, 2, 3]
// Add the element(s) if it is not inside
array <= 4 // [1, 2, 3, 4]
array <= 2 // [1, 2, 3, 4]
array <= [4, 5] // [1, 2, 3, 4, 5]
// Remove elements
array -= 1 // [2, 3, 4, 5]
array -= [2, 3, 6] // [4, 5]
Use additional methods on arrays:
let array = [1, 2, 3, 3]
// Add to the end if not already in the array
array.appendUniquely(5) // [1, 2, 3, 3, 5]
// Add to the beginning if not already in the array
array.pushUniquely(0) // [0, 1, 2, 3, 3, 5]
// Remove all of an element
array.removeAll(3) // [0, 1, 2, 5]
// Pick a random bunch of elements
array.pick(2) // [0, 2]
Optional extensions
Optionally assign the right-hand side to the left-hand side if non-nil:
var str: String = "Hello World"
var optionalStr: String? = nil
str =? optionalStr // Only sets str if myOptionalString is non-nil
print(str) // "Hello, world"
Optionally check if two Optional or non-Optional values are equal/nonequal, and return false for equality and true for inequality if either value is nil:
let areEqual: Bool { nil ==? 4 } // False
let areNonEqual: Bool { 4 !=? 3 } // True
String extensions
Return only alpha-numeric parts of a String:
let alphanumeric = "Abc123+-=~".alphanumeric // "Abc123"
Return the first word of a String:
let first = "Hello World!".firstWord // "Hello"
Get a random alphanumeric string with a specified length:
let random = String.random(16) // "b7vb92Fg9FEN2g8A"
Repeat a String:
let repeated = "Hi".repeat(5) // "HiHiHiHiHi"
Check if a String is a valid email:
let isEmailValid: Bool = "test@hi.com".isValidEmail() // True
✨ Other Features
Get URL action
Quickly open a URL in iOS or macOS:
myUrl.open()
Get part of day and weekday
Grab information regarding the time of day:
let part = DayPart.get(from: Date()) // Chooses automatically from .morning, .midday, .afternoon, .evening, .night, and .midnight
print(part.greeting) // "Good morning!"
Basic Swift extensions that make life easier.
🪶 Lightweight, Swift-y looking code for modern SwiftUI developers
🧩 Useful methods and properties written in native Swift
⚠️ Note: This package is still under development and its contents are freely subject to change.
🚧 Wiki under construction. Read below to get started!
What is FoundationPlus?
FoundationPlus is a suite of basic Swift extensions that help speed up the process of app development, and help make your code look nicer. Functions that you’ll normally need, like methods to check the app’s version, get the current day of week, and so on, can have convoluted code. FoundationPlus simplifies these with built-in extensions.
Completed Features
Most of the above features are cross-platform and are supported on iOS, macOS, tvOS and watchOS.
Get Started
Add FoundationPlus to your project using Swift Package Manager:
🧩 Extensions
Date and TimeInterval extensions
Get
TimeIntervals
easily:Format
TimeInterval
s:Get the current month, day, hour, minute, etc:
Get a date moved forward to right before midnight:
Get formatted versions of the date:
Subtract dates and get a
TimeInterval
:Get the next/preview occurence of a specific weekday:
Get a string representing how long it’s been since the
Date
:Array extensions
Safely subscript arrays, and even wrap array indices:
Use new operators on arrays:
Use additional methods on arrays:
Optional extensions
Optionally assign the right-hand side to the left-hand side if non-
nil
:Optionally check if two
Optional
or non-Optional
values are equal/nonequal, and returnfalse
for equality andtrue
for inequality if either value isnil
:String extensions
Return only alpha-numeric parts of a String:
Return the first word of a String:
Get a random alphanumeric string with a specified length:
Repeat a String:
Check if a String is a valid email:
✨ Other Features
Get URL action
Quickly open a URL in iOS or macOS:
Get part of day and weekday
Grab information regarding the time of day: