我正在尝试通过构建作业管理应用程序来自学 Core Data。我的代码构建良好,应用程序运行正常,直到我尝试向列表添加新分配。我得到这个错误Thread 1: EXC_BREAKPOINT (code=1, subcode=0x1c25719e8)
以下行:ForEach(courses, id: \.self) { course in
。控制台也有这个错误:Context in environment is not connected to a persistent store coordinator: <NSManagedObjectContext: 0x2823cb3a0>
。
我对 Core Data 知之甚少,不知道可能是什么问题。我在数据模型中设置了“作业”和“课程”实体,其中课程与作业具有一对多关系。每个作业将被归类到特定的课程下。
这是向列表添加新分配的视图的代码:
struct NewAssignmentView: View {
@Environment(\.presentationMode) var presentationMode
@Environment(\.managedObjectContext) var moc
@FetchRequest(entity: Course.entity(), sortDescriptors: []) var courses: FetchedResults<Course>
@State var name = ""
@State var hasDueDate = false
@State var dueDate = Date()
@State var course = Course()
var body: some View {
NavigationView {
Form …
Run Code Online (Sandbox Code Playgroud) 我有一个用于发布存储库夜间快照的 GitHub 工作流程。它使用create-release 操作。这是工作流文件现在的样子:
name: Release Nightly Snapshot
on:
schedule:
- cron: "0 0 * * *"
jobs:
build:
name: Release Nightly Snapshot
runs-on: ubuntu-latest
steps:
- name: Checkout master Branch
uses: actions/checkout@v2
with:
ref: 'master'
- name: Create Release
id: nightly-snapshot
uses: actions/create-release@latest
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: 'nightly snapshot'
release_name: 'nightly snapshot'
draft: false
prerelease: false
Run Code Online (Sandbox Code Playgroud)
我想要tag_name
并release_name
使用当前日期和时间,而不是硬编码值。但是,我找不到任何关于它的文档。我该怎么做?
我有一个 SwiftUI 视图MySwiftUIView
:
import SwiftUI
struct MySwiftUIView: View {
var body: some View {
Text("Hello, World!")
}
}
Run Code Online (Sandbox Code Playgroud)
我想将它用作 AppKit 视图的一部分。我尝试了以下代码:
import Cocoa
import SwiftUI
class MyViewController: NSViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.view.addSubview( NSHostingView(rootView: MySwiftUIView()) )
}
}
Run Code Online (Sandbox Code Playgroud)
与相应的故事板:
代码构建后,结果是一个空窗口:
我想要的是这样的:
我应该如何实现这一点?
我想在 macOS 上的 SwiftUI 中设置一个无边框和透明的选择器按钮。
我尝试在 Picker 视图上使用.background()
,.border()
和.opacity()
修饰符。但是,我无法使用 将背景更改为透明颜色.background()
,无法使用 删除边框.border()
,并且无法找到仅使用 将背景更改为透明的方法.opacity()
。
这是我的选择器代码:
Picker(selection: .constant(1), label: EmptyView()) {
Text("1").tag(1)
Text("2").tag(2)
}
.scaledToFit()
Run Code Online (Sandbox Code Playgroud)
.constant(1)
是占位符
更新(2019-11-30)
在尝试了适用于 a 的所有可能的修饰符和函数后Picker
,我确定到目前为止没有解决方案。截至目前,SwiftUI 作为故事板或 XIB 的替代品尚不完整。
给出以下示例:
class ProfileTab: Identifiable {
let id = UUID()
let name: String
init(name: String) {
self.name = name
}
}
class ProfileQuoteTab: ProfileTab {
let answer: String
let prompt: String
init(name: String, answer: String, prompt: String) {
self.answer = answer
self.prompt = prompt
super.init(name: name)
}
}
class ProfileImageTab: ProfileTab {
let image: Image
init(name: String, image: Image) {
self.image = image
super.init(name: name)
}
}
struct ContentView: View {
let tabs: [ProfileTab] = [
ProfileQuoteTab(name: "This is a quote …
Run Code Online (Sandbox Code Playgroud) 我有以下 SwiftUI 视图:
import SwiftUI
struct MySwiftUIView: View {
var body: some View {
VStack {
HStack {
Text("top leading text")
Spacer()
}
Spacer()
HStack {
Spacer()
Text("centered text")
Spacer()
}
Spacer()
HStack {
Spacer()
Text("bottom trailing text")
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
运行时看起来像这样:
如果我将视图嵌入ScrollView
这样的:
import SwiftUI
struct MySwiftUIView: View {
var body: some View {
ScrollView {
VStack {
HStack {
Text("top leading text")
Spacer()
}
Spacer()
HStack {
Spacer()
Text("centered text")
Spacer()
}
Spacer()
HStack {
Spacer() …
Run Code Online (Sandbox Code Playgroud) 我的代码需要解析大量 JSON 文件,这些文件托管在 GitHub 上,并且只能捆绑为 1 个 ZIP 文件。因为 ZIP 文件只有大约 80 MB,所以我想将整个解压缩操作保留在内存中。
我能够将 ZIP 文件作为Data?
变量加载到内存中,但我无法找到一种方法来解压缩Data
内存中的变量,然后将解压缩的文件/数据分配给其他一些变量。我尝试过使用ZIP Foundation,但其Archive
类型的初始值设定项仅采用文件 URL。我没有尝试Zip,但它的文档显示它也需要文件 URL。
这是我的代码:
import Cocoa
import Alamofire
class ViewController: NSViewController {
override func viewDidLoad() {
super.viewDidLoad()
let zipURL = URL(string: "https://github.com/KSP-CKAN/CKAN-meta/archive/master.zip")!
AF.request(zipURL).validate().responseData { response in
var zipData: Data? = response.data
// Here I want to unzip `zipData` after unwrapping it.
}
}
}
Run Code Online (Sandbox Code Playgroud)
我还考虑过将Data
变量作为文件传递,但未能找到方法。
更新(2019-12-01 05:00)
根据ZIPFoundation 上的拉取请求线程,我正在寻找的功能将包含在下一个版本中。我尝试使用 …
目前在我的 GitHub 存储库中,我有以下每天发布夜间快照的工作流程,并使用当前日期作为发布名称和标签名称:
name: Nightly Snapshot
on:
schedule:
- cron: "59 23 * * *"
jobs:
build:
name: Release
runs-on: ubuntu-latest
steps:
- name: Get current date
id: date
run: echo "::set-output name=date::$(date +'%Y-%m-%d')"
- name: Checkout branch "master"
uses: actions/checkout@v2
with:
ref: 'master'
- name: Release snapshot
id: release-snapshot
uses: actions/create-release@latest
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ steps.date.outputs.date }}
release_name: ${{ steps.date.outputs.date }}
draft: false
prerelease: false
Run Code Online (Sandbox Code Playgroud)
GitHub 将所有以这种方式创建的快照标记为最新版本。但是,我想避免这种情况,并实现类似于Swift 快照的效果:快照只是标签;尽管它们出现在版本中,但它们的处理方式不同。
我应该如何修改我的工作流程文件来实现这一点?谢谢!
以下2个下标有什么区别?
subscript(position: Int) {
get { ... }
}
Run Code Online (Sandbox Code Playgroud)
subscript(position: Int) {
_read { ... }
}
Run Code Online (Sandbox Code Playgroud) 根据Apple 的文档,应用程序要访问其容器外部以及此处列出的目录之外的文件系统,需要指定文件访问临时异常权利。
\n\n我的应用程序需要读取和写入 中的一些文件~/Library/Application Support/
,因此我将com.apple.security.temporary-exception.files.home-relative-path.read-write
值设置/Library/Application Support/
为应用程序的.entitlement
plist 中。
~/Library/Application Support/
现在,如果路径是硬编码的,我的应用程序可以读取文件,如下所示:
let filePath = URL(fileURLWithPath: "/Users/myUsername/Library/Application Support/path/to/somefile.txt")\nlet fileContent = try! String(contentsOf: filePath, encoding: .ascii)\n
Run Code Online (Sandbox Code Playgroud)\n\n但是,如果我像下面这样做,它将不起作用:
\n\nlet filePathString = "~/Library/Application Support/path/to/somefile.txt"\nlet expandedFilePathString = NSString(string: filePathString).expandingTildeInPath\nlet filePath = URL(fileURLWithPath: expandedFilePathString)\nlet fileContent = try! String(contentsOf: filePath, encoding: .ascii) // Error\n\n// alternatively\nlet applicationSupportPath = try! FileManager.default.url(\n for: .applicationSupportDirectory,\n in: .userDomainMask,\n appropriateFor: nil,\n create: false\n)\nlet filePath = applicationSupportPath.appendingPathComponent("path/to/somefile.txt")\nlet fileContent …
Run Code Online (Sandbox Code Playgroud) 我想知道如何从给定的字符串中删除前缀列表中包含的任何前缀(例如:[“the”,“a”,“an”](例如:“A big redplanet”->“big redplanet”) ”)。
我尝试过这个想法,但我不知道它是否正确或最有效。
extension String {
func removing(prefixes: [String]) -> String {
var resultString = self
prefixes.map {
if resultString.hasPrefix($0) {
resultString = resultString.dropFirst($0.count).description
}
}
return resultString
}
}
Run Code Online (Sandbox Code Playgroud)
想法来自这个答案:如何通过标题的第一个字母创建字典,但忽略“the”或“a/an”等文章
我有一个 JSON 文件,看起来像这样:
{
"items" : [
{ "name": "a name", "version": "a version" },
{ "version": "a 2nd version" },
{
"any_of": [
{ "name": "some name" },
{ "name": "some other name", "version": "some other version" },
[
{ "name": "another name" },
{ "version": "another version" },
{
"any_of": [
[
{ "version": "some version" },
{ "version": "some version" }
],
{ "version": "yet another version" }
]
}
]
]
},
{
"any_of" : [ …
Run Code Online (Sandbox Code Playgroud) swift ×10
swiftui ×5
macos ×4
appkit ×2
github ×2
github-api ×2
casting ×1
codable ×1
core-data ×1
enums ×1
foundation ×1
git-tag ×1
inheritance ×1
json ×1
polymorphism ×1
readonly ×1
recursion ×1
sandbox ×1
storyboard ×1
string ×1
subscript ×1
xcode ×1
zip ×1