我在尝试添加渐变背景时遇到了麻烦 UIView.余由extension的UIView,并添加下面的方法:
func setGradientBackground(colorTop: UIColor, colorBottom: UIColor) {
let gradientLayer = CAGradientLayer()
gradientLayer.colors = [colorTop, colorBottom]
gradientLayer.frame = bounds
layer.insertSublayer(gradientLayer, at: 0)
}
Run Code Online (Sandbox Code Playgroud)
然后我打电话给:
separatorView.setGradientBackground(colorTop: .clear, colorBottom: .red)
Run Code Online (Sandbox Code Playgroud)
但它不起作用.该视图已呈现,但其背景完全清楚.我也试过了CGColor
我正在尝试模拟我的URLSession实例,在研究 StackOverflow 后,我发现一种方法是创建一个模拟的 URLSessionDataTask 并调用完成处理程序resume():
class URLSessionDataTaskMock: URLSessionDataTask {
private let closure: () -> Void
init(closure: @escaping () -> Void) {
self.closure = closure
}
override func resume() {
closure()
}
override func cancel() {
closure()
}
}
class URLSessionMock: URLSession {
typealias CompletionHandler = (Data?, URLResponse?, Error?) -> Void
var data: Data?
var error: Error?
override func dataTask(
with _: URLRequest,
completionHandler: @escaping CompletionHandler
) -> URLSessionDataTask {
let data = self.data
let error = …Run Code Online (Sandbox Code Playgroud) 导入我创建的库时遇到问题.
这是Package.swift我的executable:
import PackageDescription
let package = Package(
name: "PayBackCodingChallenge",
dependencies: [
.package(url: "../NumberChecker", from: "1.0.0"),
],
targets: [
.target(
name: "PayBackCodingChallenge",
dependencies: []),
]
)
Run Code Online (Sandbox Code Playgroud)
当我尝试进入import NumberChecker我的时候,main.swift我收到以下消息:没有这样的模块'NumberChecker':
import NumberChecker
let arguments = CommandLine.arguments
if arguments.count != 3 {
print("USAGE: PayBackCodingChallenge [data] [target]")
print(" data: File containing list of numbers ")
print(" target: Target number")
} else {
let data = arguments[1]
let target = arguments[2]
print(data + " " …Run Code Online (Sandbox Code Playgroud) 我正在尝试抽象一个在我的应用程序的多个地方使用的警报。
我复制并粘贴了它的实现func alert(isPresented: Binding<Bool>, content: () -> Alert) -> some View并对其进行了调整以适应我的使用:
extension View {
func externalURLAlert(isPresented: Binding<Bool>, action: ()) -> some View {
isPresented.wrappedValue ? AnyView(Alert(
title: Text("alert.externalURL.title".localized),
message: Text("alert.externalURL.message".localized),
primaryButton: .cancel(),
secondaryButton: .default(Text("alert.externalURL.openAction.title".localized)) {
action
}
)) : AnyView(EmptyView())
}
}
Run Code Online (Sandbox Code Playgroud)
我的计划是在类似视图上调用它.externalURLAlert(isPresented: $isPresented, action: someAction),但我无法编译该函数。
我收到的错误如下:
初始化器“init(_:)”要求“Alert”符合“View”
SwiftUI 有这个 .task(priority:_:)视图修饰符。它运行异步代码。默认优先级是userInitiated。没有提及它在哪个线程上运行。
仅通过测试似乎在后台线程上运行,但是:假设始终在非主线程中运行是否安全?
我正在开发一个iOS项目,Xcode向我显示以下警告:
警告:/var/folders/qj/lk4bdr_x5fs9cvcj4jgx61mmy6f8jd/C/org.llvm.clang.codytwinton/ModuleCache/2UNUM8IHHP92Q/Foundation-KJNK6ICRXLXW.pcm:没有这样的文件或目录注意:处理/ var / 4x6j / jjjjj4j6jxjj4 /org.llvm.clang.codytwinton/ModuleCache/2UNUM8IHHP92Q/Foundation-KJNK6ICRXLXW.pcm注意:链接使用-gmodules构建的静态库,但未找到模块缓存。禁止在启用模块调试的情况下构建可再发行静态库。由于不完整的调试信息,调试体验将下降。警告:/var/folders/qj/lk4bdr_x5fs9cvcj4jgx61mmy6f8jd/C/org.llvm.clang.codytwinton/ModuleCache/2UNUM8IHHP92Q/UIKit-35ZFG9L90CDZV.pcm:没有这样的文件或目录注意:处理/ jjj4 / j6xjj4jj4jjj4j /org.llvm.clang。
我尝试过的事情:
rm -rf /var/folders/qj/lk4bdr_x5fs9cvcj4jgx61mmy6f8jd/C/org.llvm.clang.codytwinton/ModuleCache/2UNUM8IHHP92Q/Foundation-KJNK6ICRXLXW.pcmrm -rf /var/folders/v2/vjx2r5k16tz36wn8v4yn_sth0000gn/C/org.llvm.clang.moraleda/ModuleCache有任何想法吗?
我正在一个需要使用特定Calendar:的项目中Calendar.german,无论用户偏好是什么。
我想防止将来从事该项目的开发人员使用Calendar.current。有没有一种方法可以覆盖Calendar.current显示警告以将其指向正确的警告(例如,像Apple一样使用弃用消息)?
另一种方法是重写current以返回german:
extension Calendar {
static var german: Calendar {
var calendar = Calendar(identifier: .gregorian)
calendar.locale = Locale(identifier: "de")
calendar.firstWeekday = 2
return calendar
}
static var current: Calendar {
return german
}
}
Run Code Online (Sandbox Code Playgroud)
但是我真的很想知道“警告”是否可能...
我最近将 Firebase 集成到我的 iOS 项目中,但我无法记录事件。自动屏幕录制工作正常(ViewControllers 显示在控制台中),但我无法手动记录事件:
Analytics.logEvent("test", parameters: nil)
Run Code Online (Sandbox Code Playgroud)
我在调试控制台中收到以下消息:
[Firebase/Analytics][I-ACS023049] 分析已禁用。事件未记录
我的 .plist 文件直接来自 Firebase(未经修改),Firebase 配置报告以下内容:
2019-01-02 10:18:02.532838+0100 CLCarRental[90575:9644609] 5.12.0 - [Firebase/Analytics][I-ACS023007] Analytics v.50300000 启动:CLCarRental [90575:9644609]分析] [I-ACS023009]调试启用日志记录2019年1月2日10:18:02.535368 + 0100 CLCarRental [90575:9644609] 5.12.0 - [火力地堡/分析] [I-ACS023013] 分析禁用2019年1月2日10 :18:02.537685+0100 CLCarRental[90575:9644393] 可达性标志状态:-R ------- networkStatusForFlags 2019-01-02 10:18:02.624924+0100 CLCarRental[90575:9644393] 已启用 CLCarRental[9644393][答案]设置:
Run Code Online (Sandbox Code Playgroud){ "flush_interval_secs" = 300; "flush_on_background" = 1; "forward_to_google_analytics" = 0; "include_purchase_events_in_forwarded_events" = 0; "max_byte_size_per_file" = 8000; "max_file_count_per_send" = 1; "max_pending_send_file_count" = 100; "sampling_rate" = 1; "track_custom_events" = 1; "track_predefined_events" = 1; "track_view_controllers" …
我正在尝试过滤一个具有嵌套数组 的Deals状态的DealStaus数组Bookings,每个数组都有一个BookingStatus. 我想.won根据调用函数时给出的状态过滤状态和预订的交易。BookingStatus并且DealStatus都是枚举。
Deal而Booking像这样:
public struct Deal: Decodable {
public let identifier: String?
public let status: DealStatus
public let bookings: [Booking]?
}
public struct Booking: Decodable {
public let identifier: String?
public let status: BookingStatus
public let startDate: Date?
public let endDate: Date?
}
Run Code Online (Sandbox Code Playgroud)
为此,我编写了以下代码段:
private func getDeals(with bookingStatus: [BookingStatus]) -> [Deal] {
guard let user = currentUser, let deals = user.deals else …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个方法的功能实现,该方法使用嵌套循环迭代数组数组......非常不迅速。
新的实现用于compactMap展平嵌套数组并map创建对象。
这是我得到的代码。我快到了,但还没有:
if !activeDeals.isEmpty {
let carSelectionViewItems: [CarSelectionViewItem] = activeDeals
.compactMap { $0.bookings }
.map {
let make = $0.vehicle?.make ?? ""
let model = $0.vehicle?.model ?? ""
let title = "\(make) \(model)"
return CarSelectionViewItem(icon: $0.vehicle?.carImage ?? "",
title: title,
description: String(format: "car_pending_booked_description".locale,
getNewDateStringFormat(string: $0.startDate)),
bookingStatus: .active,
dealStatus: .won,
dealId: $0.id ?? "",
showMoreFunc: {})
}
viewItems.append(contentsOf: carSelectionViewItems)
}
Run Code Online (Sandbox Code Playgroud)
我想完成每个预订并创建一个CarSelectionViewItem对象,然后将append其发送到viewItems.
模型的一些细节:
public struct Deal: Decodable {
public let id: …Run Code Online (Sandbox Code Playgroud)