小编Tik*_*der的帖子

如何实现swift swift 3.0的方法?

如何在Swift 3.0中实现方法调配?

我已经阅读了关于它的nshipster文章,但是在这个代码的块中

struct Static {
    static var token: dispatch_once_t = 0
}
Run Code Online (Sandbox Code Playgroud)

编译器给我一个错误

dispatch_once_t在Swift中不可用:改为使用延迟初始化的全局变量

xcode swizzling ios swift swift3

37
推荐指数
3
解决办法
2万
查看次数

将 Just 与 flatMap 一起使用会产生失败不匹配。结合

我有这样的代码

func request(request: URLRequest) -> AnyPublisher<Data, Error> {
    return Just(request)
        .flatMap { request in
            RequestManager.request(request) // returns AnyPublisher<Data, Error>
    }
    .eraseToAnyPublisher()
}
Run Code Online (Sandbox Code Playgroud)

我收到编译错误:

实例方法 flatMap(maxPublishers:_:) 要求类型 Just.Failure(又名 Never)和 Error 是等价的

很明显,因为Justhas NeverasFailure.flatMaprequires Erroras Failure,所以Never!=Error

我看到两种方法:

  • 使用正确的Publisher 而不是Just,但我没有找到合适的人选。

  • 使用诸如.mapError, 之类的运算符.mapError { $0 as Error },但我不确定这是个好主意。

任何想法如何处理它?

更新:

使用更有意义

.setFailureType(to: Error.self)
Run Code Online (Sandbox Code Playgroud)

或者

.mapError { $0 as Error }
Run Code Online (Sandbox Code Playgroud)

swift combine

28
推荐指数
1
解决办法
7163
查看次数

在 SwiftUI 中更改选择器的导航标题

当用户选择某些选项时,我想设置导航标题 Picker

这是我的选择模型:

enum AppIcon: CaseIterable, Identifiable {

    var id: Self {
        return self
    }

    case `default`
    case ethereum
    case litecoin

    var name: String {
        switch self {
        case .default:
            return "Bitcoin"
        case .ethereum:
            return "Ethereum"
        case .litecoin:
            return "Litecoin"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的观点

struct ContentView: View {
    @State var icon: AppIcon = .default
    var body: some View {
        NavigationView {
            Form {
                Section {
                    Picker(selection: $icon, label: Text("Icon")) {
                        ForEach(AppIcon.allCases) { icon in
                            Text(icon.name).tag(icon)
                        }
                    }
                }
            }
            .navigationBarTitle("Appearance") …
Run Code Online (Sandbox Code Playgroud)

picker ios swift swiftui

12
推荐指数
1
解决办法
3768
查看次数

如何动态更改 SwiftUI 本地化

如何在 SwiftUI 中动态更改应用程序的本地化?

我认为我们可以使用下面的代码,但我们应该找到 SwiftUI 方法。

func localized(_ lang:String) -> String {

    let path = Bundle.main.path(forResource: lang, ofType: "lproj")
    let bundle = Bundle(path: path!)

    return NSLocalizedString(self, tableName: nil, bundle: bundle!, value: "", comment: "")
}}
Run Code Online (Sandbox Code Playgroud)

ios swift swiftui

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

了解Combine中的share()

众所周知,通常发布者是结构体。如果是一个类会发生什么变化?

假设我们有 1 个发布者发出 1 个值和 2 个订阅者订阅它。

let p1 = Just(20)
let s1 = p1.print().sink { _ in }
let s2 = p1.print().sink { _ in }

// s1 - receive value: (20)
// s2 - receive value: (20)
Run Code Online (Sandbox Code Playgroud)

在打印日志中,我们可以看到两个订阅者都获得了值 (20)。

如果我们打开 share() 操作符的文档,我们会看到

share() - 将发布者作为类实例返回。

所以它只是将发布者的语义从值更改为引用。在我们的示例中,我们不将p1发布者传递给任何函数或分配给任何对象,这就是为什么对我来说发布者是结构体或类没有区别的原因......但是如果我添加share()操作符行为会有所不同,s2不会获得价值.

let p1 = Just(20).share() // !
let s1 = p1.print().sink { _ in }
let s2 = p1.print().sink { _ in }

// s1 - …
Run Code Online (Sandbox Code Playgroud)

swift combine

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

添加视频背景视图的最佳做法是什么?

我想添加视频(或gif)的背景视图,如应用程序"Uber"我想在我的应用程序中使用视频背景视图很长一段时间.

我想知道这些问题的答案:

  • 它们会消耗更少的电池能量
  • 我可以在iPhone或iPad上使用它吗?
  • 这种方法的表现

注册表单的屏幕截图

在此输入图像描述

video objective-c ios swift

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

如何从Assets.xcassets获取颜色?

我已经在Assets.xcassets中创建了颜色集,您可以在下面的屏幕截图中看到它

在此处输入图片说明

我的问题是

如何在代码中获得这种颜色?

assets objective-c uicolor swift xcode9

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

是否可以在RealmSwift中使用枚举?

我想做这样的事情:

enum WeekDay {
    case Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday
}

class Person: Object {

    dynamic var birthday: WeekDay? = .Monday
    dynamic var id: String? = nil
    dynamic var birthdayRaw: String? = nil

    override static func primaryKey() -> String? {
        return "id"
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,我收到一个错误:

属性不能标记为动态,因为其类型无法在Objective-C中表示

我怎么解决这个问题?谢谢你的帮助.

enums realm ios swift

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

如何在SwiftUI列表中获取行索引?

我想要一个编号列表,其中每一行都有一个数字。

像这样

但是我在List初始化器中看不到正确的API

目前,我看到了这种解决方法

var persons = ["Boris", "Anna", "Tom"]

// MARK: - Body
func body(props: Props) -> some View {
    List(persons.indices, id: \.self) { index in
        Text("\(index) \(self.persons[index])")
    }
}
Run Code Online (Sandbox Code Playgroud)

swift swiftui swiftui-list

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