小编Jos*_*den的帖子

Swift 4 Codable; 如何使用单根级别密钥解码对象

我正在使用Codable带有JSON数据的Swift 4 协议.我的数据被格式化为在根级别有一个键,其中一个对象值包含我需要的属性,例如:

{
  "user": {
    "id": 1,
    "username": "jdoe"
  }
}
Run Code Online (Sandbox Code Playgroud)

我有一个User可以解码user密钥的结构:

struct User: Codable {
  let id: Int
  let username: String
}
Run Code Online (Sandbox Code Playgroud)

由于idusername是的性质user,而不是在根级别,我需要使一个包装类型,如下所示:

struct UserWrapper: Codable {
  let user: User
}
Run Code Online (Sandbox Code Playgroud)

然后,我可以通过UserWrapper,解码JSON ,并User解码.它似乎是很多冗余代码,因为我需要在我拥有的每种类型上都有一个额外的包装器.有没有办法避免这种包装模式或更正确/优雅的方式来处理这种情况?

json deserialization swift swift4 codable

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

在没有模板化表达式的情况下使用ES6模板文字语法是否有缺点?

有没有理由(性能或其他)不对javascript源文件中的所有字符串使用反引号模板文字语法?如果是这样,什么?

我应该更喜欢这个:

var str1 = 'this is a string';
Run Code Online (Sandbox Code Playgroud)

在这?

var str2 = `this is another string`;
Run Code Online (Sandbox Code Playgroud)

javascript string ecmascript-6 template-literals

19
推荐指数
3
解决办法
2378
查看次数

我应该什么时候在 WebGL/OpenGL 中启用/禁用顶点位置属性?

我正在处理一些具有多个按顺序运行的着色器程序的 WebGL 代码。

以前,我gl.enableVertexAttribArray(...)在初始化期间根据需要使用我的 gl 上下文和着色器。我假设,也许是错误的,调用这个函数是设置特定于由gl.useProgram(...)

现在,我的第一个着色器程序有两个启用的属性数组,我的第二个启用了一个。当第二个程序运行时,出现错误:

Error: WebGL: drawArrays: no VBO bound to enabled vertex attrib index 1!
Run Code Online (Sandbox Code Playgroud)

所以这让我认为也许我需要在第一个程序中使用它后禁用顶点属性 1,但我想验证这就是我应该这样做的方式,并希望得到解释为什么会这样正确与否。

是最好的做法enableVertexAttribArray(...),并disableVertexAttribArray每一个在每次使用后阵列的位置?

javascript webgl

6
推荐指数
2
解决办法
4645
查看次数

如何清除Mac应用程序Xcode构建的UserDefaults?

我正在尝试确保我的首次运行代码能够正常运行,因此我想清除由UserDefaults.standard.set调用创建的首选项文件。它在哪里,或者至少有办法清除它(除了将其写入我的应用程序之外)?

运行产品>清理不会清除默认值。

我已经查看了DerivedData,〜/ Library / Preferences,/ Library / Preferences,但是没有找到我想要的东西。

macos xcode nsuserdefaults

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

STL映射与memcmp比较.如何在运行时设置比较块大小?

我有一个类Parent从文件加载配置数据并在一个文件中创建Child对象std::map.Child对象由const char*配置文件中定义的对象映射.对于任何给定的Parent,所有孩子将共享相同的密钥长度.因此,一个Parent人的映射Child对象可能有8个字节的密钥,而另一个Parent人的孩子可能使用4个字节的密钥.

如何使用此处描述的方法或使用其他方法创建std::map具有比较函数的新成员对象,该函数依赖于仅在运行时可用的数据?

具体来说,我试图使用memcmp(a, b, n);像以前链接的问题显示,但我想n变量而不是固定在4.

如果我没有充分解释我正在尝试做什么,我会尝试将其放入代码中.如何编写它compareKey以便childKeyLength用于比较地图键:

class Child;
class Parent {
private:
    struct compareKey {
        bool operator()(char * const a, char * const b) {
            return memcmp(a, b, childKeyLength) < 0;
        }  
    };
    std::map<const char*, Child, compareKey> children;
    size_t childKeyLength;

public:
    Parent(size_t childKeyLength)
    : childKeyLength(childKeyLength) {};
}
Run Code Online (Sandbox Code Playgroud)

c++ dictionary stl

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