Variadic enum cases are not supported我在以下代码中遇到错误。这在 Swift4 中编译并工作正常,但在 Swift5、Xcode 10.2 中给出编译时错误
enum ModelRule {
case required(keys: String...) // error: Variadic enum cases are not supported
case nonEmptyString(keys: String...) // error: Variadic enum cases are not supported
case emptyString(key: String)
}
Run Code Online (Sandbox Code Playgroud)
虽然消息非常明确,但我想知道为什么他们要删除完美工作的功能?或者我在这里遗漏了什么?
另外,对于上述错误,还有比以下更好的解决方案吗?
case required(keys: [String])
我在一些文章中看到@state有很多限制
我尝试制作一个结构模型并在 contentview (ParentView)中用 @state 标记它,并通过用 @binding 包装它来将该模型传递给它的子视图,它工作得很好,所以我不明白为什么我们仍然需要 @objectbinding因为我们可以将相同的值传递给这些子视图,如果一个视图发生变化,其他视图也会发生变化?或者@objectbound解决的@state有哪些限制?
希望这是一个简单的过程。我正在尝试使用 SwiftUI 在 iOS 应用程序中的列表中显示日期和时间。我目前的代码有问题并收到以下错误消息:Cannot convert value of type 'PostListViewModel' to expected argument type 'Data'
请找到下面的代码:
struct PostViewModel {
var post: Post
init(post: Post) {
self.post = post
}
var startTime: Date {
let data = PostListViewModel()
let decoder = JSONDecoder()
decoder.dateDecodingStrategy = .formatted(DateFormatter.DateFormat)
let postDate = try! decoder.decode(startTime.self, from: data)
return self.post.startTime
}
}
Run Code Online (Sandbox Code Playgroud)
extension DateFormatter {
static let DateFormat: DateFormatter = {
let formatter = DateFormatter()
formatter.dateFormat = "MMM d"
formatter.calendar = Calendar(identifier: .iso8601)
formatter.timeZone = TimeZone(secondsFromGMT: …Run Code Online (Sandbox Code Playgroud) Swift 3.0来自at处有错误 Swift 5.0
代码:
//Create audio file name URL
let audioFilename = getDocumentsDirectory().appendingPathComponent("audioRecording.m4a")
//Create the audio recording, and assign ourselves as the delegate
audioRecorder = try AVAudioRecorder(url: audioFilename, settings: settings)
Run Code Online (Sandbox Code Playgroud)
我认为它应该是这样的:
func getDocumentsDirectory() -> URL
{
let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
let documentsDirectory = paths[0]
return documentsDirectory
}
Run Code Online (Sandbox Code Playgroud)
这是对的吗?或不?
这是什么错误,请指导到目前为止在谷歌上找不到任何材料。下面是我的代码,它给出了错误:
if GIDSignIn.sharedInstance().hasAuthInKeychain() == false {
GIDSignIn.sharedInstance().signIn()
} else {
if let user = GIDSignIn.sharedInstance().currentUser {
service.authorizer = user.authentication.fetcherAuthorizer()
fetchEvents()
} else {
GIDSignIn.sharedInstance().signInSilently()
}
}
Run Code Online (Sandbox Code Playgroud)
出现两个错误:
Value of type 'GIDSignIn' has no member 'hasAuthInKeychain'
Value of type 'GIDSignIn' has no member 'signInSilently'
Run Code Online (Sandbox Code Playgroud) 我想知道是否可以将 Slider 和 TextField 绑定到同一个变量?原因是我希望用户能够通过滑动滑块或手动在文本字段中输入值来填充值。
执行任一操作也应该更新另一个方法,例如,如果用户将滑块滑动到值 100,则文本字段应实时更新以显示 100。
这是否可能,如果不可能,那么是否有任何类似的解决方案可以提供类似的结果?
我对 swift 很陌生,所以请原谅任何明显的误解。我试图研究但没有好的答案。
我有一个带有以下迭代的 NavigationView
ForEach(listOfStuff, id: \.self)
Run Code Online (Sandbox Code Playgroud)
被listOfStuff定义为符合 Hashable 的结构,一切正常。
我想将结构更改为类,但不知道如何使类可哈希以便工作\.self(它一直抱怨该类必须可哈希)
例子是旧的或者一直在谈论结构。我什至不知道是否可以在 ForEach 中使用类?我该怎么办?
谢谢
我正在尝试在 swiftui 中创建网格视图,但它不适合我。有人可以告诉我我做错了什么吗?我尝试使用 ac 风格的 for 循环,我可以在其中设置变量并递增它,但是当我这样做时 swiftui 会抛出错误。
struct ProductSubCat: View {
@State var productCategory = String()
@State var number = Int()
@ObservedObject var allData = WebserviceGetDataSolutions()
@State var theCount = 0
var body: some View {
ScrollView {
Spacer()
ForEach(0 ..< self.allData.posts[self.number].productLines.count / 2, id: \.self) {row in
HStack {
ForEach(0..<2) {cell in
NavigationLink(destination: ProductDetails())
{
Text(self.allData.posts[self.number].productLines[row].system)
Image("stonclad")
.resizable()
.aspectRatio(contentMode: .fit)
}.buttonStyle(PlainButtonStyle())
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud) func getIPAddress() -> String {
var address: String?
var ifaddr: UnsafeMutablePointer<ifaddrs>? = nil
if getifaddrs(&ifaddr) == 0 {
var ptr = ifaddr
while ptr != nil {
defer { ptr = ptr?.pointee.ifa_next }
let interface = ptr?.pointee
let addrFamily = interface?.ifa_addr.pointee.sa_family
if addrFamily == UInt8(AF_INET) || addrFamily == UInt8(AF_INET6) {
// wifi = ["en0"]
// wired = ["en2", "en3", "en4"]
// cellular = ["pdp_ip0","pdp_ip1","pdp_ip2","pdp_ip3"]
let name: String = String(cString: (interface!.ifa_name))
if name == "en0" || name == "en2" || name …Run Code Online (Sandbox Code Playgroud) nextTrackCommand当我从屏幕导航回来并再次进入屏幕时,目标被多次调用,即使我删除了viewWillDisappear. 我做错了什么?
override func viewDidLoad() {
super.viewDidLoad()
UIApplication.shared.beginReceivingRemoteControlEvents()
MPRemoteCommandCenter.shared().nextTrackCommand.addTarget { [unowned self] (_) -> MPRemoteCommandHandlerStatus in
print("go to next track")
return .success
}
}
override func viewWillDisappear(_ animated: Bool) {
MPRemoteCommandCenter.shared().nextTrackCommand.removeTarget(self)
}
Run Code Online (Sandbox Code Playgroud)