对于那些不喜欢阅读 20 条评论以寻找答案的人。这是对我有用的:
最终代码:
tableViewAlarms.insertRows(at: [0], withAnimation: .effectFade)
let keyView = tableViewAlarms.view(atColumn: 0, row: 0, makeIfNecessary: false) as! NSTableCellView
self.view.window!.makeFirstResponder(keyView.textField)
Run Code Online (Sandbox Code Playgroud)
问题:
有一个问题。我一直坚持让我的 NSTableView 按照我想要的方式工作。我是一个初学者,使用类、继承和视图给我带来了很多麻烦。
您可以通过按“+”按钮向 NSTableView 添加一行。
第一个 tableColumn 中的 NSTextField 是可编辑的,双击时开始编辑
现在我希望在添加一行时自动激活第一列中的 NSTextField(显示光标,通过键盘响应文本输入)。
到目前为止,我已经尝试过:
class NSTextFieldSubClass: NSTextField {
override func becomeFirstResponder() -> Bool {
return true
}
}
Run Code Online (Sandbox Code Playgroud)
我还使用了单元格的绑定(或者准确地说是 NSTextField 本身),但是由于我真的不知道如何绕过这些,所以它无处可去
我认为是要走的路:
创建单元格时使 NSTextField 成为 firstResponder,但我不知道如何。任何帮助是极大的赞赏!!
另外:当光标闪烁时,NSTextField 的状态究竟是如何调用的?
编辑:
至于子类,这就是我尝试的全部:
class NSTextFieldSubClass: NSTextField {
override func …Run Code Online (Sandbox Code Playgroud) 我正在尝试将 JSON 对象上传到 Google Firestore。
将对象设置为 Firestore 文档时,我的代码会引发以下错误:
Error: Value for argument "data" is not a valid Firestore document.
Cannot use "undefined" as a Firestore value
(found in field audit.`20`.requests.`0`.lrEndTimeDeltaMs).
Run Code Online (Sandbox Code Playgroud)
现在我做的第一件事是在上传之前记录对象以检查未定义的值:
console.log(JSON.stringify(resultsToUpload));
return database
.collection("foo1")
.doc("bar1")
.set(resultsToUpload);
Run Code Online (Sandbox Code Playgroud)
不仅在对象中定义了所有值,而且提到的字段audit.`20`.requests.`0`.lrEndTimeDeltaMs甚至不存在:
resultsToUpload = {
"audit":{
"20":{
"ronaldScore":3,
"id":"network-requests",
"requests":[
{
"url":"https://www.example.com/",
"startTime":0,
"endTime":62.16699999640696,
"transferSize":15794,
"resourceSize":78243,
"statusCode":200,
"mimeType":"text/html",
"resourceType":"Document"
}
]
}
}
}
Run Code Online (Sandbox Code Playgroud)
数据来自 Google Lighthouse Audit。
计算字符串化 JSON 对象的 UTF-8 字符串长度会得到 30 MB 的大小。
1) 定义了所有值(有些为空,这应该不是问题)。
2) JSON 中甚至不存在上述字段。
我的问题是:这怎么会发生?一个字段怎么会出现?另外:我将如何解决这个问题?