我有一个用户表,其中包含我要在登录用户的mysql查询中访问的一堆列.最终,我希望这些列中的值形成一个User对象.是否有标准函数来执行此操作,或者我是否基本上需要将查询的每个值传递给新的User语句,以便将它们传递给User类的构造函数?
我有一个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) 使用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出错?
我越来越慢地理解闭包,以下代码可以正常工作.我想知道是否有更简单/更好的方法来完成我在这里尝试做的事情.
在下面的代码中,this简单地引用一个对象,该对象具有sections一个数组属性.我遍历这个数组,并绑定到每个el属性的每个属性(一个DOM元素)的悬停事件section.我公司供应的回调hover()方法就是关闭进来.主要this对象有两个方法.sectionMouseenter(),并.sectionMouseleave()根据事件类型(由代表不管是被调用e.type在我的代码)是mouseenter或mouseleave.作为参数,当前部分将传递给这些方法.当然,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)
这是编写此闭包的"正确"方法,还是有更好的方法?
我能够让我的 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) 我正在尝试创建一个简单的扩展来切换 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代码片段末尾的值时一样。
如何通过扩展代码正确更新设置?
我不想检查一个对象是否被定义,而是希望能够简单地在其上调用一个方法,并且如果该对象实际上是未定义的,则让它无声地失败.所以,而不是必须写下面的内容:
if(obj.delegate && obj.delegate.closeMenu){
obj.delegate.closeMenu();
}
Run Code Online (Sandbox Code Playgroud)
我可以在if声明中写下这句话:obj.delegate.closeMenu().如果obj没有委托属性,就不会发生任何事情.如果delegate存在同样的事情,但它没有closeMenu()方法.
这可能吗?如果是,请提供实施.
考虑以下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代码非常干.
我公司具有面向服务的架构。因此,我的应用程序的 GraphQL 服务器必须调用其他服务来完成来自前端的数据请求。
让我们想象一下我的 GraphQL 模式定义了 type User。此类型的数据来自两个来源:
username,age和friends。User仅与我的应用程序相关的相关数据的 SQL 数据库:favoriteFood, favoriteSport.让我们假设用户帐户服务的端点自动返回usernameand age,但您必须传递查询参数friends=true才能检索friends数据,因为这是一项昂贵的操作。
鉴于此背景,以下查询在getUser解析器中提出了一些优化挑战:
query GetUser {
getUser {
username
favoriteFood
}
}
Run Code Online (Sandbox Code Playgroud)
挑战 #1
当getUser解析器向用户帐户服务发出请求时,它如何知道是否也需要请求friends数据?
挑战 #2 当解析器查询我的应用程序的数据库以获取其他用户数据时,它如何知道要从数据库中检索哪些字段?
对于这两个挑战,我能找到的唯一解决方案是通过info解析器接收到的第四个参数检查解析器中的查询。这将允许它找出是否friends应该在对用户帐户服务的 REST 调用中请求,并且它将能够构建正确的SELECT查询以从我的应用程序的数据库中检索所需的数据。
这是正确的方法吗?这似乎是 GraphQL 实现必须一直运行的用例,因此我希望遇到一个被广泛接受的解决方案。但是,我没有找到很多解决这个问题的文章,也没有广泛使用的 NPM 模块似乎存在(graphql-parse-resolve-info是 PostGraphile 的一部分,但每周只有大约 12k 的下载量,而graphql-fields有大约 18.5 k …
我看到的唯一区别是{}您不能向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 ×3
cocoa-touch ×2
ios ×2
closures ×1
cocoa ×1
constructor ×1
for-in-loop ×1
graphql ×1
jbuilder ×1
jquery ×1
json ×1
macos ×1
mysql ×1
nsbrowser ×1
object ×1
objective-c ×1
oop ×1
optimization ×1
php ×1
types ×1
typescript ×1
undefined ×1