标签: swift5

“不支持可变参数枚举案例”swift 5 错误

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])

swift swift5

2
推荐指数
1
解决办法
943
查看次数

@State 的限制

我在一些文章中看到@state有很多限制

  • 我们不应该将它与复杂的模型一起使用,最好将它与简单的属性(如 string、bool 等)一起使用。
  • 我们应该在视图本身内部使用它。

我尝试制作一个结构模型并在 contentview (ParentView)中用 @state 标记它,并通过用 @binding 包装它来将该模型传递给它的子视图,它工作得很好,所以我不明白为什么我们仍然需要 @objectbinding因为我们可以将相同的值传递给这些子视图,如果一个视图发生变化,其他视图也会发生变化?或者@objectbound解决的@state有哪些限制?

swift5 swiftui

2
推荐指数
1
解决办法
1067
查看次数

时间和日期格式化程序 SwiftUI JSON 数据

希望这是一个简单的过程。我正在尝试使用 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 swift5 swiftui

2
推荐指数
1
解决办法
2759
查看次数

getDocumentsDirectory Swift5 替代方案

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)

这是对的吗?或不?

ios swift3 swift5

2
推荐指数
1
解决办法
1269
查看次数

“GIDSignIn”类型的值没有成员“signInSilently”

这是什么错误,请指导到目前为止在谷歌上找不到任何材料。下面是我的代码,它给出了错误:

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)

iphone google-calendar-api ios gidsignin swift5

2
推荐指数
1
解决办法
3854
查看次数

(SwiftUI) 将 Slider 和 TextField 绑定到同一个变量?

我想知道是否可以将 Slider 和 TextField 绑定到同一个变量?原因是我希望用户能够通过滑动滑块或手动在文本字段中输入值来填充值。

执行任一操作也应该更新另一个方法,例如,如果用户将滑块滑动到值 100,则文本字段应实时更新以显示 100。

这是否可能,如果不可能,那么是否有任何类似的解决方案可以提供类似的结果?

swift swift5 swiftui

2
推荐指数
1
解决办法
1270
查看次数

Swift 5.+ - 使类可哈希?

我对 swift 很陌生,所以请原谅任何明显的误解。我试图研究但没有好的答案。

我有一个带有以下迭代的 NavigationView

ForEach(listOfStuff, id: \.self)
Run Code Online (Sandbox Code Playgroud)

listOfStuff定义为符合 Hashable 的结构,一切正常。

我想将结构更改为类,但不知道如何使类可哈希以便工作\.self(它一直抱怨该类必须可哈希)

例子是旧的或者一直在谈论结构。我什至不知道是否可以在 ForEach 中使用类?我该怎么办?

谢谢

swift swift5 swiftui

2
推荐指数
1
解决办法
3721
查看次数

SwiftUI 中的 Gridview

我正在尝试在 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)

xcode ios swift swift5 swiftui

2
推荐指数
1
解决办法
1653
查看次数

快速获取当前设备在 wifi 和蜂窝网络中的 IP 地址

   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)

xcode ip-address swift swift5

2
推荐指数
1
解决办法
5794
查看次数

为什么 addTarget 不会在 Swift 中被删除?

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)

xcode ios swift mpremotecommandcenter swift5

2
推荐指数
1
解决办法
80
查看次数