我正在 GitHub 上维护两个 Swift Package Manager 项目。其中一个DiceKit依赖于另一个ProtocolKit。他们也都使用swift-tools-version4.0。
DiceKit 与 Travis CI 建立了持续集成,如下所示。它在 macOS 和 Linux、Swift 4.0、4.0.2、4.0.3、4.1、4.1.1、4.1.2、4.1.3 和 4.2 上进行了测试。但是,除了 4.2 之外的每个版本的测试都失败了,而 4.2 上的测试却成功了。
这是 macOS Swift 4.0 日志中的错误:
$ swift test
error: dependency graph is unresolvable; found these conflicting requirements:
Dependencies:
https://github.com/Samasaur1/ProtocolKit.git @ 1.0.0..<2.0.0
error: product dependency 'ProtocolKit' not found
Fetching https://github.com/Samasaur1/ProtocolKit.git
Run Code Online (Sandbox Code Playgroud)
但是,在 Swift 4.2 日志中,获取依赖项是成功的:
$ swift test
Fetching https://github.com/Samasaur1/ProtocolKit.git
Completed resolution in 1.44s
Cloning https://github.com/Samasaur1/ProtocolKit.git
Resolving https://github.com/Samasaur1/ProtocolKit.git at 1.0.2
Compile …Run Code Online (Sandbox Code Playgroud) 我正在尝试通过电子邮件/密码登录使用 SwiftUI + Firebase 身份验证。我的问题是,有没有办法在用户创建帐户时将配置文件信息附加到用户的身份验证信息中,或者我是否必须将 Firebase Auth 与 Firestore 或 Firebase 数据库结合使用?我只是想收集用户的名字和姓氏,可能还有城市/州/国家。
import SwiftUI
import Firebase
import Combine
class SessionStore: ObservableObject {
var didChange = PassthroughSubject<SessionStore, Never>()
@Published var session: User? {didSet {self.didChange.send(self) }}
var handle: AuthStateDidChangeListenerHandle?
func listen() {
handle = Auth.auth().addStateDidChangeListener({ (auth, user) in
if let user = user {
self.session = User(uid: user.uid, email: user.email, displayName: user.displayName)
} else {
self.session = nil
}
})
}
func signUp(email: String, password: String, handler: @escaping AuthDataResultCallback) {
Auth.auth().createUser(withEmail: email, …Run Code Online (Sandbox Code Playgroud) 我在操场上运行一些代码。
var optional: Int?
guard let unwrapped = optional else {
print("optional is nil")
return
}
print("Optional is not nil”)
Run Code Online (Sandbox Code Playgroud)
使用此当前代码,我收到一条错误消息,指出“在 func 之外返回无效”。如果我更换return用break,我得到一个错误,指出break只允许一个循环或交换机的内部。如果我在 print 语句之后没有任何其他语句,我会收到一条错误消息,指出“保护主体不能落空,请考虑使用 return 或 throw 退出范围”。
我需要区分大小写替换Swift字符串中的字符。
我一直在使用replacingOccurrences(of:with:options:range:)内置的字符串函数将每个“ a”更改为“ / a /”,将每个“ b”更改为“ / b /”,依此类推:
stringConverted = stringConverted.replacingOccurrences(of: "a", with: "/a/", options: [])
Run Code Online (Sandbox Code Playgroud)
然后,将每个“ / a /”更改为其对应的字母“ a”。我将每个“ / b /”更改为其对应的字母“ q”,依此类推。
我的问题是我需要这种替换方式以区分大小写。我进行了查找,但是尝试了发现的内容,但没有帮助。
我需要使用range参数吗?还是我做错了其他事?
我有文字,但不合适。当文本不适合我的默认框架时,我想使用选取框。
Text(self.viewModel.soundTrack.title)
.font(.custom("Avenir Next Regular", size: 24))
.multilineTextAlignment(.trailing)
.lineLimit(1)
.foregroundColor(.white)
.fixedSize(horizontal: false, vertical: true)
//.frame(width: 200.0, height: 30.0)
Run Code Online (Sandbox Code Playgroud)