我厌倦了为我的 IOS 应用程序构建一个 macOS 应用程序(Xcode 12,SwifUI)。要从我的网站获取 json 数据,我需要一个获取请求(没有 API 密钥)。我在 medium、hackingwithswift 等上找到了几个样本,但我总是保持相同的错误。
[logging] volume does not support data protection, stripping SQLITE_OPEN_FILEPROTECTION_* flags\
Run Code Online (Sandbox Code Playgroud)
我想知道为什么我只在 macOS 项目上出现这个错误,因为我的 IOS 版本工作正常。
class FetchDeviceInfo: ObservableObject {
@Published var deviceInfo = [DeviceData]()
init() {
let url = "https://yourURL"
let session = URLSession(configuration: .default)
session.dataTask(with: URL(string: url)!) { (data, _, _) in
guard let json = data else{return}
do{
let data = try JSONDecoder().decode([DeviceData].self, from: json)
print(images)
DispatchQueue.main.async {
self.deviceInfo = data
}
}
catch{
print(error.localizedDescription)
} …Run Code Online (Sandbox Code Playgroud) 是否可以将 new.searchable与 结合使用@FetchRequest?
我有这样的代码:
struct FooListView: View {
@Environment(\.managedObjectContext) private var viewContext
@FetchRequest(
sortDescriptors: [NSSortDescriptor(keyPath: \Foo.name, ascending: true)],
animation: .default)
private var items: FetchedResults<Foo>
@State var searchText = ""
var body: some View {
NavigationView {
List {
ForEach(items) { item in
NavigationLink(destination: FooView(Foo: item)) {
Text(item.wrappedName)
}
}
.onDelete(perform: deleteItems)
}
.searchable(text: $searchText)
.navigationTitle("Foos")
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想使用 来searchText过滤我的FetchedResults.
我有一个像这样的 SwiftUI 视图:
import SwiftUI
struct ReView: View {
@Environment(\.managedObjectContext) var moc
@FetchRequest(
entity: Re.entity(),
sortDescriptors: [
NSSortDescriptor(keyPath: \Re.name, ascending: false)
]
) var entities: FetchedResults<Re>
var body: some View {
NavigationView {
List(entities, id: \.self) { entity in
Text(entity.name ?? "Unknown")
}
}
}
}
struct ReView_Previews: PreviewProvider {
static var previews: some View {
Group {
ReView()
.environment(\.managedObjectContext, PersistentCloudKitContainer.persistentContainer.viewContext)
}
}
}
Run Code Online (Sandbox Code Playgroud)
如何在预览中显示一些示例数据?
我使用 aFetchRequest来填充元素。然后我使用一个列表,并希望显示某种待办事项元素,您可以在其中看到哪些元素被选中,哪些元素未被选中。因此我创建了一个 CheckBoxView。
我现在的问题是,我需要将绑定传递给视图。但如何在 ForEach 中做到这一点呢?如果我有一个绑定,这对我来说很容易,我只需生成一个@State即可。这里该怎么做呢?
List {
ForEach(elements, id: \.self) { item in
CheckBoxView(checked: item.checked)
}
}
Run Code Online (Sandbox Code Playgroud)
这是视图:
struct CheckBoxView: View {
@Binding var checked: Bool
....
}
Run Code Online (Sandbox Code Playgroud) 我的 SwiftUI 项目中有以下代码
@FetchRequest private var step: FetchedResults<Steps>
private var processID: UUID
private var stepID: UUID?
init(procID: UUID, stepID: UUID?) {
if stepID != nil {
let predicate = NSPredicate(format: "id == %@", stepID! as CVarArg)
_step = FetchRequest<Steps>(sortDescriptors: [], predicate: predicate)
}
processID = procID
}
Run Code Online (Sandbox Code Playgroud)
我想知道是否可以以某种方式从 init() 返回空步骤 FetchRequest,以防传递的 stepID 为零。当前未编译它,因为步骤 var 未初始化。我试图使其成为可选的,但编译器不喜欢它。