在使用 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) 我正在开发一个应用程序,该应用程序有时需要一次导入几种不同类型的二进制文件和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文件,建议您将以下值之一用于“符合”:
并将此值作为标识符:
我尝试相应地修改值,但未进行任何更改,并且我的应用程序未“看到” .app文件类型,但是我看到其他应用程序对此提供支持,因此即使在iOS 13上也必须有一种方法(使用最新的Beta版本:13.1)。
更新:
从Apple,通过反馈助手,我得到以下答案:“具有.app扩展名的常规文件(而非软件包)的UTI为'com.apple.application-file'”。但不幸的是,我仍然无法使其工作。我使用了以下配置:
DOCUMENT TYPE:
Name —> …Run Code Online (Sandbox Code Playgroud) 我在项目中准备了以下类来检索用户当前位置:
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)