小编Bra*_*ley的帖子

SwiftUI可选TextField

SwiftUI文本字段可以与可选绑定一起使用吗?当前此代码:

struct SOTestView : View {
    @State var test: String? = "Test"

    var body: some View {
        TextField($test)
    }
}
Run Code Online (Sandbox Code Playgroud)

产生以下错误:

无法将类型'Binding <String?>'的值转换为预期的参数类型'Binding <String>'

有没有办法解决?在数据模型中使用Optionals是一种非常常见的模式-实际上,这是Core Data中的默认设置,因此SwiftUI不支持它们似乎很奇怪

swiftui

11
推荐指数
4
解决办法
1036
查看次数

什么是KeyPath用于?

在Swift 4中,许多基金会团队已经讨论过使用keyPaths与Swift 3相比有多容易.这引出了一个问题......什么是keyPath?说真的,我找不到任何明确的资源.

foundation swift

10
推荐指数
1
解决办法
4232
查看次数

如何在Swift 2中将结构转换为Anyobject?

我有,

struct S {}
Run Code Online (Sandbox Code Playgroud)

随着,

func y (x: S) -> AnyObject {}
Run Code Online (Sandbox Code Playgroud)

在Swift 2中,是否有可能在y()中,

return x
Run Code Online (Sandbox Code Playgroud)

我目前的代码:

struct S {let value: Int = 0}
let x = S()
func y(x: S) -> AnyObject {return x}
Run Code Online (Sandbox Code Playgroud)

产生以下错误:

'S'类型的返回表达式不符合'AnyObject'类型

有没有办法缓解这种情况?

macos casting class ios swift

9
推荐指数
1
解决办法
7089
查看次数

在初始化器中使用函数 - Swift?

假设如下:

class A {
    let x : Int
    init() {
        self.x = assign(1)
    }
    func assign(y : Int) -> Int {
        return y
    }
}
Run Code Online (Sandbox Code Playgroud)

这会产生错误。

这是我的问题:有没有办法在类初始值设定项中调用函数?

编辑:添加错误消息:

在初始化所有存储的属性之前,在方法调用“分配”中使用“self”

initialization swift

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

BindableObjects SwiftUI 数组

所以我正在尝试使用 SwiftUI 设置 CoreData,并且 CoreData 模型和 SwiftUI 视图都在工作。我需要做的就是连接它们。我能够传递离散数量的 BindableObjects 但我需要的是传递一个数组。这是设置:

let peristence = PersistenceManager()
var model = [Entry]() // Entry Conforms to NSManagedObject and BindableObject
let request = Entry.createFetchRequest()
let sort = NSSortDescriptor(key: "callsign", ascending: true)
request.sortDescriptors = [sort]
do {
    model = try peristence.persistenceContainer.viewContext.fetch(request)
} catch {
    fatalError(error.localizedDescription)
}

if let windowScene = scene as? UIWindowScene {
    let window = UIWindow(windowScene: windowScene)
    window.rootViewController = UIHostingController(rootView: ContentView().environmentObject(model))
Run Code Online (Sandbox Code Playgroud)

这会产生以下错误:

实例方法“environmentObject”要求“[Entry]”符合“BindableObject”

我将如何使其[Entry]符合?

protocols core-data swift swiftui

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

序列下降(while:) 看似什么也没做

Swift标准库断言:

下降(同时:)

通过跳过元素返回子序列,同时谓词返回 true 并返回剩余元素。

通过使用函数签名:

func drop(while predicate: (Self.Element) throws -> Bool) rethrows -> Self.SubSequence
Run Code Online (Sandbox Code Playgroud)

其中predicate描述为:

一个闭包,它将序列的元素作为其参数,并返回一个布尔值,指示该元素是否匹配。

我的问题是,根据该描述,不应发生以下行为:

let test = (0...3).drop { $0 > 1 }
test.contains(0) // true
test.contains(3) // true
Run Code Online (Sandbox Code Playgroud)

collections range sequence swift swift4

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

在SwiftUI列表中选择多个项目

在UIKit中,您可以使用allowMultipleSelection选择UITableView的多行-可以使用SwiftUI中的List完成吗?

swiftui

5
推荐指数
3
解决办法
1175
查看次数

SwiftUI 中的多个 NavigationLink

NavigationLinkSwiftUI 中可以有多个s 吗?以下仅显示第一个链接:

struct Test : View {
    var body: some View {
        NavigationView {
            NavigationLink(destination: Text("First")) {
                Text("Visible")
            }
            NavigationLink(destination: Text("Second")) {
                Text("Invisible")
            }
            //EDIT: Also Invisible
            Text("Not rendered")
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑:原来第一个下的所有内容都NavigationLink没有显示

swiftui

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

相对(to :)函数究竟做了什么?

这来自Swift标准库文档:

relative(to:)

返回此范围表达式描述的给定集合中的索引范围.

这是方法签名:

func relative<C>(to collection: C) -> Range<Self.Bound> where C : _Indexable, Self.Bound == C.Index
Run Code Online (Sandbox Code Playgroud)

除了它的解释:

参数

采集

用于评估此范围表达式的集合.

回报价值

适合切片收集的范围.返回的范围不保证在集合的范围内.呼叫者应该对返回值应用与用户直接提供的范围相同的前提条件.

最后,这是我的测试代码:

let continuousCollection = Array(0..<10)
var range = 0..<5
print(range.relative(to: continuousCollection))
//0..<5
range = 5..<15
print(range.relative(to: continuousCollection))
//5..<15
range = 11..<15
print(range.relative(to: continuousCollection))
//11..<15
let disparateCollection = [1, 4, 6, 7, 10, 12, 13, 16, 18, 19, 22]
range = 0..<5
print(range.relative(to: disparateCollection))
//0..<5
range = 5..<15
print(range.relative(to: disparateCollection))
//5..<15
range = 11..<15
print(range.relative(to: disparateCollection)) …
Run Code Online (Sandbox Code Playgroud)

collections range swift swift4

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

如何清除Swift中的终端屏幕?

我正在为Swift 2中的命令行编写BASIC解释器,我找不到实现简单命令CLS的方法(清除终端中的所有文本.)我应该只是在循环中打印空格,还是有一个函数我不知道这会清除终端屏幕吗?

macos terminal command-line swift

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

关闭工作表SwiftUI

我正在尝试为我的模式表实现一个关闭按钮,如下所示:

struct TestView: View {
    @Environment(\.isPresented) var present
    var body: some View {
        Button("return") {
            self.present?.value = false
        }
    }
}

struct DataTest : View {
    @State var showModal: Bool = false

    var modal: some View {
        TestView()
    }
    var body: some View {
        Button("Present") {
            self.showModal = true
        }.sheet(isPresented: $showModal) {
            self.modal
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,在点击返回按钮时没有任何作用。显示模式时,控制台中将显示以下内容:

[WindowServer] display_timer_callback:意外状态(现在:5fbd2efe5da4 <预期:5fbd2ff58e89)

如果您强行打开包装,present您会发现它是nil

如何以.sheet编程方式解雇?

swiftui

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

Swift中的字典键如何排序?

检查以下字典:

var testDict: [String : Int] = [
    "a" : 1,
    "b" : 2,
    "c" : 3,
    "d" : 4
]
Run Code Online (Sandbox Code Playgroud)

现在,遍历字典的键:

for i in testDict.keys {
    print(i)
}
Run Code Online (Sandbox Code Playgroud)

这将产生以下输出:

百特

但是,预期的输出将是编码顺序中的键:

A B C D

因为不是这种情况,所以我假设键已排序。如果是这样,如何对它们进行排序,更重要的是,如何将它们返回到编写时的顺序?

sorting dictionary swift

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