Codable似乎是一个非常令人兴奋的功能.但我想知道我们如何在核心数据中使用它?特别是,是否可以直接从/向NSManagedObject编码/解码JSON?
我尝试了一个非常简单的例子:
并定义Foo自己:
import CoreData
@objc(Foo)
public class Foo: NSManagedObject, Codable {}
Run Code Online (Sandbox Code Playgroud)
但是当它像这样使用时:
let json = """
{
"name": "foo",
"bars": [{
"name": "bar1",
}], [{
"name": "bar2"
}]
}
""".data(using: .utf8)!
let decoder = JSONDecoder()
let foo = try! decoder.decode(Foo.self, from: json)
print(foo)
Run Code Online (Sandbox Code Playgroud)
编译器因此错误而失败:
super.init isn't called on all paths before returning from initializer
Run Code Online (Sandbox Code Playgroud)
目标文件是定义的文件 Foo
我想我可能做错了,因为我甚至没有通过NSManagedObjectContext,但我不知道在哪里坚持下去.
核心数据是否支持Codable?
Svelte 官方教程在其文档中使用了如此复杂的对象<svelte:self>
let root = [
{
type: 'folder',
name: 'Important work stuff',
files: [
{ type: 'file', name: 'quarterly-results.xlsx' }
]
},
{
type: 'folder',
name: 'Animal GIFs',
files: [
{
type: 'folder',
name: 'Dogs',
files: [
{ type: 'file', name: 'treadmill.gif' },
{ type: 'file', name: 'rope-jumping.gif' }
]
},
{
type: 'folder',
name: 'Goats',
files: [
{ type: 'file', name: 'parkour.gif' },
{ type: 'file', name: 'rampage.gif' }
]
},
{ type: 'file', name: …Run Code Online (Sandbox Code Playgroud) 我正在阅读文档,在调整了它的示例代码之后,我设法让编译器向我咆哮,说循环依赖是这样的:
<script>
let count = 0;
$: double = count * 2;
$: if (double >= 20) {
alert(`count is dangerously high!`);
count = 9;
}
function handleClick() {
count += 1;
}
</script>
<button on:click={handleClick}>
Clicked {count} {count === 1 ? 'time' : 'times'}
</button>
Run Code Online (Sandbox Code Playgroud)
我在 discord 上询问如何修复它,人们建议我应该像这样对编译器隐藏依赖项:
<script>
let count = 0;
$: double = count * 2;
function resetCount() {
count = 9;
}
$: if (double >= 20) {
alert(`count is dangerously high!`);
resetCount();
}
function …Run Code Online (Sandbox Code Playgroud) 我试过这样的事情:
@override
Widget build(BuildContext context) {
return CupertinoPageScaffold(
navigationBar: CupertinoNavigationBar(
middle: Text(widget.title),
),
child: Center(
child: Container(
child: CupertinoButton.filled(
child: const Text('Push screen'),
onPressed: () {
CupertinoNavigationBar navBar = CupertinoNavigationBar(
leading: Row(children: <Widget>[
const CupertinoNavigationBarBackButton(),
CupertinoButton(
child: const Text('Button 2'),
padding: EdgeInsets.zero,
onPressed: () {},
),
]),
);
Navigator.push(context, CupertinoPageRoute<CupertinoPageScaffold>(
builder: (_) => CupertinoPageScaffold(
navigationBar: navBar,
child: Center(child: const Text('Content')),
)
));
},
),
),
),
);
}
Run Code Online (Sandbox Code Playgroud)
当点击按钮时,它失败了
I/flutter (30855): ??? EXCEPTION CAUGHT BY WIDGETS LIBRARY ????????????????????????????????????????????????????????????
I/flutter (30855): …Run Code Online (Sandbox Code Playgroud) 我有一个非常简单的示例,我希望打字稿通知我有关返回类型错误的信息:
interface Options {
type: "person" | "car"
}
interface Person {
name: string
}
interface Car {
wheels: number
}
function get(opts: Options & {type: "person"}): Person
function get(opts: Options & {type: "car"}): Car
function get(opts: any): any {
switch (opts.type) {
case "person": return { name: "john" }
case "car": return {name: "john"} // why there is no error?
}
}
let person = get({ type: "person" })
let car = get({type: "car"})
Run Code Online (Sandbox Code Playgroud)
我想我可能没有正确使用受歧视的工会。将可区分联合与函数重载结合起来的正确方法应该是什么?
我有这个简单的代码,我尝试检查请求是否被取消.但令人惊讶的是,它打印false而不是true去1.9.
我想知道检查它的正确方法是什么?
package main
import (
"context"
"log"
"net/http"
)
func main() {
r, _ := http.NewRequest("GET", "http://example.com", nil)
ctx, cancel := context.WithCancel(context.Background())
r = r.WithContext(ctx)
ch := make(chan bool)
go func() {
_, err := http.DefaultClient.Do(r)
log.Println(err == context.Canceled)
ch <- true
}()
cancel()
<-ch
}
Run Code Online (Sandbox Code Playgroud) 似乎如果它只是一个变量,我可以像这样有条件地进行转换。
Animal animal = Dog();
if (animal is Dog) {
animal.bark(); // animal is of type Dog here
}
Run Code Online (Sandbox Code Playgroud)
但是如果它是一个类的属性,我如何有条件地转换?
House house = House()
house.animal = Dog();
if (house.animal is Dog) {
house.animal.bark(); // fail
}
Run Code Online (Sandbox Code Playgroud)
我知道我可以这样做
if (house.animal is Dog) {
Dog animal = house.animal;
animal.bark();
}
Run Code Online (Sandbox Code Playgroud)
但这似乎很麻烦。无论如何,我可以像使用变量一样一次性检查和转换类型吗?
非常感谢。
我想在我的Sapper项目中使用类属性和私有字段。显然,它们现在必须由babel进行预处理。
我试图将相应的babel插件添加到rollup.config.js中,只是为了实现一些目的。
我试图将babel汇总插件添加到这样的服务器插件的末尾,
babel({
extensions: ['.js', '.mjs', '.html', '.svelte'],
runtimeHelpers: true,
exclude: ['node_modules/@babel/**'],
plugins: [
'@babel/plugin-proposal-class-properties',
'@babel/plugin-proposal-private-methods',
],
}),
Run Code Online (Sandbox Code Playgroud)
但这似乎根本没有生效。
我也将其添加到客户端插件中(在旧版条目之前),但是它抱怨我需要添加@babel/plugin-syntax-dynamic-import,因此babel似乎必须识别整个语法才能进行预处理,而且我真的不想编译动态导入适用于现代浏览器。
如何在sapper中启用esnext语法?
是否有 API 来检查应用程序是否已最小化但尚未被杀死,因此它在后台?
我用谷歌搜索它,也在 GitHub 问题中搜索,不能很好。
这样的API存在吗?
我有一个非常简单的 vue 页面,位于pageas/index.vue:
<template>
<div>hello world</div>
</template>
Run Code Online (Sandbox Code Playgroud)
运行后nuxt generate,生成的html文件dist/index.html中没有任何“hello world”。
这意味着生成站点不是完全静态的。它仍然需要浏览器运行js来渲染最终的html,并且搜索引擎可能看不到vue页面中的html。
我想知道至少当 vue 页面是静态的(例如,没有asyncData或没有fetch指定)时,是否有办法让 nuxt 完全生成 html 文件?
我想在 flutter 中获取目录的总大小,包括它的 files ,它的子文件夹中的 files 等等。
我尝试使用Directory.statSync,但它似乎只返回目录本身的元大小。
我应该递归遍历目录来计算大小吗?如果是这样,是否有一个 dart 包已经这样做了(我找不到)?
如果没有,有什么更有效的方法可用?