小编gmo*_*eda的帖子

Swift:UIView的背景渐变

我在尝试添加渐变背景时遇到了麻烦 UIView.余由extensionUIView,并添加下面的方法:

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

uiview ios swift

7
推荐指数
4
解决办法
1万
查看次数

HockeyApp:安装对话框未显示

我正在使用HockeyApp在一些测试人员中分发我的应用程序.它工作正常,但由于几个版本,他们无法像以前那样安装应用程序.他们没有得到这个提示:

在此输入图像描述

有没有人面临同样的问题?

testing ios hockeyapp

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

不使用 init 模拟 URLSessionDataTask

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

xcode ios swift

6
推荐指数
0
解决办法
1848
查看次数

Swift包管理器(SPM):导入库时出错

导入我创建的库时遇到问题.

这是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)

swift

5
推荐指数
1
解决办法
414
查看次数

SwiftUI:创建自定义警报

我正在尝试抽象一个在我的应用程序的多个地方使用的警报。

我复制并粘贴了它的实现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”

xcode ios swiftui

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

SwiftUI .task 视图修饰符:它在哪个线程中运行?

SwiftUI 有这个 .task(priority:_:)视图修饰符。它运行异步代码。默认优先级是userInitiated。没有提及它在哪个线程上运行。

仅通过测试似乎在后台线程上运行,但是:假设始终在非主线程中运行是否安全?

concurrency swift swiftui

4
推荐指数
1
解决办法
649
查看次数

Xcode警告:不是这样的文件或目录(.pcm文件)

我正在开发一个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。

我尝试过的事情:

  • 删除派生数据,清理构建文件夹并再次构建
  • 禁用Clang模块调试
  • 重新整合并安装Pods
  • 使用dSYM文件将调试信息格式更改为DWARF
  • 删除日志中显示的文件,例如 rm -rf /var/folders/qj/lk4bdr_x5fs9cvcj4jgx61mmy6f8jd/C/org.llvm.clang.codytwinton/ModuleCache/2UNUM8IHHP92Q/Foundation-KJNK6ICRXLXW.pcm
  • 删除ModuleCache: rm -rf /var/folders/v2/vjx2r5k16tz36wn8v4yn_sth0000gn/C/org.llvm.clang.moraleda/ModuleCache

有任何想法吗?

xcode clang ios

3
推荐指数
1
解决办法
1291
查看次数

如果使用了var,Xcode显示警告

我正在一个需要使用特定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)

但是我真的很想知道“警告”是否可能...

xcode swift

3
推荐指数
1
解决办法
49
查看次数

分析被禁用。事件未记录

我最近将 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][答案]设置:

{
"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" …
Run Code Online (Sandbox Code Playgroud)

xcode google-analytics ios firebase firebase-analytics

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

Swift:过滤嵌套数组

我正在尝试过滤一个具有嵌套数组 的Deals状态的DealStaus数组Bookings,每个数组都有一个BookingStatus. 我想.won根据调用函数时给出的状态过滤状态和预订的交易。BookingStatus并且DealStatus都是枚举。 DealBooking像这样:

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)

functional-programming ios swift

0
推荐指数
1
解决办法
1210
查看次数

数组中的 Swift 数组。使用compactMap/map代替嵌套循环

我正在尝试创建一个方法的功能实现,该方法使用嵌套循环迭代数组数组......非常不迅速。

新的实现用于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)

arrays functional-programming ios swift

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