小编max*_*son的帖子

将MySQL查询转换为对象的最佳方法

我有一个用户表,其中包含我要在登录用户的mysql查询中访问的一堆列.最终,我希望这些列中的值形成一个User对象.是否有标准函数来执行此操作,或者我是否基本上需要将查询的每个值传递给新的User语句,以便将它们传递给User类的构造函数?

php mysql constructor object

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

枚举NSMutableDictionary - 无法从循环内访问对象属性

我有一个NSMutableDictionary,analyzedPxDictionary包含一堆Pixel对象(我创建的自定义类).除此之外,Pixel对象包含一个名为NSArray的属性rgb.该数组将始终包含三个NSNumber对象,其整数值对应于像素的rgb值.

我现在试图枚举analyzedPxDictionary使用快速枚举.但是,似乎我无法从循环内访问Pixel对象的属性.我声明rgb是一个合成属性,以便我可以使用点语法访问它.但是当我尝试从循环中执行此操作时,程序崩溃,给出了如下错误:

'-[NSCFString rgb]: unrecognized selector sent to instance 0xa90bb50'

以下是产生该错误的代码示例:

for (Pixel *px in analyzedPxDictionary) {
    printf("r: %i, g: %i, b: %i",[[px.rgb objectAtIndex:0] integerValue], [[px.rgb objectAtIndex:1] integerValue], [[px.rgb objectAtIndex:2] integerValue]);
}
Run Code Online (Sandbox Code Playgroud)

我试过在那条printf线上设置一个断点来检查px.虽然rgb如果其属性被列为一个并且正确描述为NSArray的实例,但它似乎不包含任何对象.

我相信我rgb正确地初始化.要解释一下,请考虑以下代码:

NSString *key;
for (Pixel *px in analyzedPxDictionary) {
    key = [px description];
}

Pixel *px = [analyzedPxDictionary objectForKey:key];
printf("\nr: %i, g: %i, b: %i",[[px.rgb objectAtIndex:0] integerValue], [[px.rgb objectAtIndex:1] integerValue], [[px.rgb …
Run Code Online (Sandbox Code Playgroud)

cocoa-touch objective-c fast-enumeration for-in-loop ios

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

自动引用计数和合成属性

使用ARC for iOS时,以下是否有任何区别?

@property (strong, nonatomic) NSObject *someProperty;
...
@synthesize someProperty;

//and then in the init method, either:
self.someProperty = aProperty;

//or
someProperty = aProperty;
Run Code Online (Sandbox Code Playgroud)

我知道没有ARC,self.someProperty实际上是调用合成的setter方法,它向retain对象发送一条消息.但是现在使用ARC,如果我使用点符号设置这样的属性是否重要?

更一般地说,ARC真的意味着我根本不必担心引用计数吗?或者在某些情况下,我编写代码的方式可能会导致ARC出错?

cocoa-touch memory-management ios automatic-ref-counting

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

这是为我的目的制作封闭的正确方法吗?

我越来越慢地理解闭包,以下代码可以正常工作.我想知道是否有更简单/更好的方法来完成我在这里尝试做的事情.

在下面的代码中,this简单地引用一个对象,该对象具有sections一个数组属性.我遍历这个数组,并绑定到每个el属性的每个属性(一个DOM元素)的悬停事件section.我公司供应的回调hover()方法就是关闭进来.主要this对象有两个方法.sectionMouseenter(),并.sectionMouseleave()根据事件类型(由代表不管是被调用e.type在我的代码)是mouseentermouseleave.作为参数,当前部分将传递给这些方法.当然,for循环的迭代在JavaScript中没有变量范围,因此需要闭包来封装section变量的引用.

    for (var i = this.sections.length - 1; i >= 0; i--) {
        var section = that.sections[i];
        section.el.hover(
            (function(section){
                return function(e){
                    that['section' + e.type.capitalize()](section);
                }
            })(section)
        );
    };
Run Code Online (Sandbox Code Playgroud)

这是编写此闭包的"正确"方法,还是有更好的方法?

javascript jquery closures

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

实现 NSBrowserDelegate 协议的问题

我能够让我的 NSBrowser 实例在第一列中显示正确的数据。但是,当我选择其中一个选项时,下一列只会显示相同的一组选项。我已经阅读了文档,查看了 Apple 的所有相关示例代码,以及我在互联网上可以找到的几乎所有内容,但我根本无法找出实现所需方法的正确方法。我提供给浏览器的数据是一个字典数组。每个字典又包含一个“子”键,它是另一个字典数组。这些字典有自己的“子”键,它们也是字典数组等。使用 JSON 进行描述(对象是字典,数组是数组),它看起来像这样:

data = [
    {
        name: 'David',
        children:[
            {
                name: 'Sarah',
                children: {...}
            },
            {
                name: 'Kevin',
                children: {...}
            }
        ]
    },
    {
        name: 'Mary',
        children:[
            {
                name: 'Greg',
                children: {...}
            },
            {
                name: 'Jane',
                children: {...}
            }
        ]
    }
]
Run Code Online (Sandbox Code Playgroud)

所以第一列应该显示“大卫”和“玛丽”。如果选择了“David”,下一列应显示“Sarah”和“Kevin”,依此类推。

我当前的实现依赖于我创建的自定义方法,该方法应该将浏览器的索引路径从提供的数据转换为相应的 NSArray 级别。这个方法看起来像:

- (NSArray *)getSelectionInBrowser:(NSBrowser *)browser
{
    NSArray *selection = browserData;
    NSIndexPath *path = [browser selectionIndexPath];
    for (NSUInteger i = 0; i < path.length; i++) {
        selection = [[selection objectAtIndex:i] objectForKey:@"children"]; …
Run Code Online (Sandbox Code Playgroud)

macos cocoa nsbrowser

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

通过扩展更新 VS Code 用户设置

我正在尝试创建一个简单的扩展来切换 VS Code 中测试文件的可见性。这是我目前的方法:

const testGlobs = [
  '**/__tests__',
  '**/__mocks__',
  '**/*.spec.js',
]

function hideTests() {
  const exclude = workspace.getConfiguration('files.exclude', vscode.ConfigurationTarget.Global)
  testGlobs.forEach(glob => exclude.update(glob, true, vscode.ConfigurationTarget.Global));
  console.log(exclude) // does not reflect the updated values
}
Run Code Online (Sandbox Code Playgroud)

这似乎没有影响。文件模式的设置保留false在我的用户设置文件中,就像注销exclude代码片段末尾的值时一样。

如何通过扩展代码正确更新设置?

visual-studio-code vscode-extensions

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

当尝试在未定义的对象上调用方法时,有没有办法使JavaScript无声地失败?

我不想检查一个对象是否被定义,而是希望能够简单地在其上调用一个方法,并且如果该对象实际上是未定义的,则让它无声地失败.所以,而不是必须写下面的内容:

if(obj.delegate && obj.delegate.closeMenu){
    obj.delegate.closeMenu();
}
Run Code Online (Sandbox Code Playgroud)

我可以在if声明中写下这句话:obj.delegate.closeMenu().如果obj没有委托属性,就不会发生任何事情.如果delegate存在同样的事情,但它没有closeMenu()方法.

这可能吗?如果是,请提供实施.

javascript oop error-handling undefined

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

在另一个中包含其他一个jbuilder模板

考虑以下show.json.jbuilder模板:

json.user do |json|
    json.extract! @user, :id, :username, :email, :created_at, :avatar
end

json.policies do |json|
    json.array!(@policies) do |policy|
        json.extract! policy, :id, :title, :cached_votes_score
    end
end

json.liked do |json|
    json.array!(@liked) do |policy|
        json.extract! policy, :id, :title, :cached_votes_score
    end
end

json.disliked do |json|
    json.array!(@disliked) do |policy|
        json.extract! policy, :id, :title, :cached_votes_score
    end
end
Run Code Online (Sandbox Code Playgroud)

是否可以将它们分成四个不同的模板,然后将它们包含在show模板中?就像是:

include template_user
include template_policies
include template_liked
include template_disliked
Run Code Online (Sandbox Code Playgroud)

如果这不可行,那么创建更多模块化jbuilder代码有哪些替代方案?我发现我的jbuilder代码非常干.

json ruby-on-rails jbuilder

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

为 SQL 数据库和面向服务的架构优化 GraphQL 解析器

我公司具有面向服务的架构。因此,我的应用程序的 GraphQL 服务器必须调用其他服务来完成来自前端的数据请求。

让我们想象一下我的 GraphQL 模式定义了 type User。此类型的数据来自两个来源:

  1. 用户帐户服务,暴露了REST端点获取用户的usernameagefriends
  2. 仅由我的应用程序用于存储User仅与我的应用程序相关的相关数据的 SQL 数据库:favoriteFood, favoriteSport.

让我们假设用户帐户服务的端点自动返回usernameand age,但您必须传递查询参数friends=true才能检索friends数据,因为这是一项昂贵的操作。

鉴于此背景,以下查询在getUser解析器中提出了一些优化挑战:

query GetUser {
  getUser {
    username
    favoriteFood
  }
}
Run Code Online (Sandbox Code Playgroud)

挑战 #1getUser解析器向用户帐户服务发出请求时,它如何知道是否也需要请求friends数据?

挑战 #2 当解析器查询我的应用程序的数据库以获取其他用户数据时,它如何知道要从数据库中检索哪些字段?

对于这两个挑战,我能找到的唯一解决方案是通过info解析器接收到的第四个参数检查解析器中的查询。这将允许它找出是否friends应该在对用户帐户服务的 REST 调用中请求,并且它将能够构建正确的SELECT查询以从我的应用程序的数据库中检索所需的数据。

这是正确的方法吗?这似乎是 GraphQL 实现必须一直运行的用例,因此我希望遇到一个被广泛接受的解决方案。但是,我没有找到很多解决这个问题的文章,也没有广泛使用的 NPM 模块似乎存在(graphql-parse-resolve-info是 PostGraphile 的一部分,但每周只有大约 12k 的下载量,而graphql-fields有大约 18.5 k …

optimization graphql apollo-server

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

Record&lt;string, any&gt; 和 {} 之间的区别?

我看到的唯一区别是{}您不能向Record<string, any>. 还有什么我想念的吗?

示例代码(游乐场链接):

const one: Record<string, any> = { foo: 1 }
one.bar = 2

const two: {} = { foo: 1 }
two.bar = 2 // Property 'bar' does not exist on type '{}'.(2339)
Run Code Online (Sandbox Code Playgroud)

javascript types typescript

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