xcrun simctl io booted recordVideo <filename>.<file extension>
For example:
xcrun simctl io booted recordVideo appVideo.mov
Press ctrl + c
to stop recording the video.
print(Unmanaged.passUnretained(self).toOpaque()) |
extension View { | |
var previewedInAllColorSchemes: some View { | |
ForEach(ColorScheme.allCases, id: \.self, content: preferredColorScheme) | |
} | |
} |
#!/bin/bash | |
project_name="CleanLocalizableExample" | |
development_file="./$project_name/en.lproj/Localizable.strings" | |
es_duplicates=9 | |
es_match=8 | |
es_not_included=7 | |
sort_and_find_duplicates() { |
// Note: This snipped comes from Ray Wenderlich's "Combine" book. | |
// https://store.raywenderlich.com/products/combine-asynchronous-programming-with-swift | |
class TimeLogger: TextOutputStream { | |
private var previous = Date() | |
private let formatter = NumberFormatter() | |
init() { | |
formatter.maximumFractionDigits = 5 | |
formatter.minimumFractionDigits = 5 |
(A work in progress) GitHub basic writing and formatting syntax
/// Copyright (c) 2018 Razeware LLC | |
/// | |
/// Permission is hereby granted, free of charge, to any person obtaining a copy | |
/// of this software and associated documentation files (the "Software"), to deal | |
/// in the Software without restriction, including without limitation the rights | |
/// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |
/// copies of the Software, and to permit persons to whom the Software is | |
/// furnished to do so, subject to the following conditions: | |
/// | |
/// The above copyright notice and this permission notice shall be included in |
(So we don't have to use id: .self)
extension ForEach where Data.Element: Hashable, ID == Data.Element, Content: View {
init(values: Data, content: @escaping (Data.Element) -> Content) {