小编Tho*_*h73的帖子

如何使用SwiftUI和Combine检测Datepicker的值变化?

在使用 SwiftUI 和 Combine 时,您将如何检测 Datepicker 的值变化?每当移动日期选择器轮时,我都需要调用一个方法,以更新文本和滑块。

我一直在寻找特定的方法来识别值的变化(使用 UIKit 可以将一个动作与一个事件相关联),但显然我没有在文档中找到任何有用的东西(我已经尝试过 onTapGesture 方法,但这不是我想要什么,因为它强制用户点击选择器来更新其他视图,而我希望在用户移动轮子时自动更新)。

import SwiftUI

struct ContentView: View {

    private var calendar = Calendar.current

    @State private var date = Date()
    @State private var weekOfYear = Double(Calendar.current.component(.weekOfYear, from: Date()) )
    @State private var lastWeekOfThisYear = 53.0
    @State private var weekDay: String = { () -> String in 
        let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = "EEEE"
        let weekDay = dateFormatter.string(from: Date())
        return weekDay
    }()

    var body: some View {

        VStack {

            // Date Picker …
Run Code Online (Sandbox Code Playgroud)

events datepicker valuechangelistener swiftui combine

8
推荐指数
2
解决办法
5224
查看次数

如何使用Xcode 11在UTIs部分配置.app文件?

我正在开发一个应用程序,该应用程序有时需要一次导入几种不同类型的二进制文件和ascii文件,具有不同的扩展名,例如.bin,.app,.crc等。

为了实现这一点,我在项目目标的信息部分中准备了文档类型和导入的UTI。

直到Xcode 10为止,一切都工作正常,但是现在我正在使用Xcode 11 Beta 6测试该应用程序,我注意到该导入对于我所有处理的文件扩展名都可以正常工作,.app文件除外。

基本上,当我从一个电子邮件附件或一个“文件”文件夹中获取任何.app文件,并尝试将其导出以将其导入到一个应用程序中时,在支持这些文件的应用程序中不再显示我的应用程序。

在信息部分中,我使用了以下条目(用于.app文件):

Document Types:
My App Data Files
Name: My App Data Files
Types: public.data

Additional document type properties:
LSHandlerRank (String) -> Alternate


Imported UTIs:
My App Application File:
Description: My App Application File
Identifier: com.mydomain.app
Conform To: public.data

Additional imported UTI properties:
UTTypeTageSpecification (Dictionary) ->
Item 0 (String) -> app
Item1 (String) -> APP
Run Code Online (Sandbox Code Playgroud)

对于Xcode 10来说,这很好用,对于Xcode 11来说,现在再也没有了。

我分析了Apple的“统一类型标识符参考”列表,并注意到对于.app文件,建议您将以下值之一用于“符合”:

  • com.apple.package
  • com.apple.bundle
  • com.apple.application

并将此值作为标识符:

  • com.apple.application-?捆绑

我尝试相应地修改值,但未进行任何更改,并且我的应用程序未“看到” .app文件类型,但是我看到其他应用程序对此提供支持,因此即使在iOS 13上也必须有一种方法(使用最新的Beta版本:13.1)。

更新:

从Apple,通过反馈助手,我得到以下答案:“具有.app扩展名的常规文件(而非软件包)的UTI为'com.apple.application-file'”。但不幸的是,我仍然无法使其工作。我使用了以下配置:

DOCUMENT TYPE:
Name —> …
Run Code Online (Sandbox Code Playgroud)

import uti .app xcode11

6
推荐指数
1
解决办法
283
查看次数

如何在没有ViewControllers的情况下使用SwiftUI获取当前位置?

我在项目中准备了以下类来检索用户当前位置:

LocationManager.swift

import Foundation
import CoreLocation


class LocationManager: NSObject {

    // - Private
    private let locationManager = CLLocationManager()

    // - API
    public var exposedLocation: CLLocation? {
        return self.locationManager.location
    }

    override init() {
        super.init()
        self.locationManager.delegate = self
        self.locationManager.desiredAccuracy =     kCLLocationAccuracyBest
        self.locationManager.requestWhenInUseAuthorization()
    }
}

// MARK: - Core Location Delegate 
extension LocationManager: CLLocationManagerDelegate {

    func locationManager(_ manager: CLLocationManager,
                         didChangeAuthorization status:      CLAuthorizationStatus) {

        switch status {

            case .notDetermined         : print("notDetermined")          // location permission not asked for yet
            case .authorizedWhenInUse   : print("authorizedWhenInUse")  // location …
Run Code Online (Sandbox Code Playgroud)

core-location swiftui

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