小编hgl*_*hgl的帖子

如何在Core Data中使用swift 4 Codable?

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

core-data swift swift4 xcode9 codable

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

如何将 Svelte 存储与树状嵌套对象一起使用?

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)

svelte svelte-store

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

如何在不与 svelte 中的编译器作斗争的情况下避免循环依赖?

我正在阅读文档,在调整了它的示例代码之后,我设法让编译器向我咆哮,说循环依赖是这样的:

<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)

javascript reactive-programming svelte

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

在 CupertinoNavigationBar 中,我如何在领先时显示后退按钮之外的按钮?

我试过这样的事情:

  @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)

dart flutter flutter-cupertino

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

如何在打字稿中将可区分的联合与函数重载结合起来

我有一个非常简单的示例,我希望打字稿通知我有关返回类型错误的信息:

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)

我想我可能没有正确使用受歧视的工会。将可区分联合与函数重载结合起来的正确方法应该是什么?

typescript

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

如何检查请求是否被取消

我有这个简单的代码,我尝试检查请求是否被取消.但令人惊讶的是,它打印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)

go

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

如何有条件地在飞镖中投射类型?

似乎如果它只是一个变量,我可以像这样有条件地进行转换。

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)

但这似乎很麻烦。无论如何,我可以像使用变量一样一次性检查和转换类型吗?

非常感谢。

casting dart

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

如何在Svelte / Sapper中使用第3阶段语法?

我想在我的Sapper项目中使用类属性和私有字段。显然,它们现在必须由babel进行预处理。

我试图将相应的babel插件添加到rollup.config.js中,只是为了实现一些目的。

  1. babel汇总插件仅在旧版模式下使用。
  2. 服务器部分根本不使用babel。

我试图将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语法?

babeljs ecmascript-next svelte sapper

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

如何检查应用程序是否在flutter的后台最小化?

是否有 API 来检查应用程序是否已最小化但尚未被杀死,因此它在后台?

我用谷歌搜索它,也在 GitHub 问题中搜索,不能很好。

这样的API存在吗?

flutter

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

如何使“nuxtgenerate”生成的html完全静态?

我有一个非常简单的 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 文件?

javascript vue.js nuxt.js

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

如何获取目录的大小,包括其文件

我想在 flutter 中获取目录的总大小,包括它的 files ,它的子文件夹中的 files 等等。

我尝试使用Directory.statSync,但它似乎只返回目录本身的元大小。

我应该递归遍历目录来计算大小吗?如果是这样,是否有一个 dart 包已经这样做了(我找不到)?

如果没有,有什么更有效的方法可用?

dart flutter

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