小编Gen*_*ari的帖子

NSPredicate过滤掉另一组中的所有项目

有没有办法做到这一点?我有一组项目,我想从另一组中排除.我知道我可以循环遍历我的集合中的每个项目,只将它添加到我的filteredSet中,如果它不在另一个集合中,但如果我可以使用谓词那么会很好.

要排除的项集不是直接相同类型的对象集; 这是一组字符串; 如果其中一个属性与该字符串匹配,我想从我的第一个集合中排除任何内容....换句话说:

NSMutableArray *filteredArray = [NSMutableArray arrayWithCapacity:self.questionChoices.count];

BOOL found;

for (QuestionChoice *questionChoice in self.questionChoices)
{
    found = NO;

    for (Answer *answer in self.answers)
    {
        if ([answer.units isEqualToString:questionChoice.code])
        {
            found = YES;
            break;
        }
    }

    if (!found)
        [filteredArray addObject:questionChoice];
}
Run Code Online (Sandbox Code Playgroud)

这可以用谓词来完成吗?

objective-c nsset nspredicate ios

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

是否可以将方法参数传递给该方法的属性?

我想创建一个自定义 AuthorizeAttribute 类,如下所述:Override Authorize Attribute in ASP.NET MVC

诀窍是,用户是否被授权不仅取决于他正在执行的方法,还取决于参数:

[MyCustomAuthorize(id)]
[HttpGet]
public ActionResult File(Guid id)
{

}
Run Code Online (Sandbox Code Playgroud)

基本上,用户将被授权查看某些文件,但不能查看其他文件,因此我想将 id 传递给我的自定义授权属性。但我似乎无法这样做,因为名称“id”不在范围内。

我知道我可以执行逻辑来确保用户可以在方法开始时访问该文件,但是我有几种方法都需要完成此操作,如果我可以将其作为[授权] 属性。

asp.net asp.net-mvc custom-attributes

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

如果您在表单提交之前尝试重定向会发生什么?

我在一个正在研究的网站上遇到了这个奇怪的代码,并且不明白我所看到的行为是如何或为何发生的.

<input type="submit" value="Save" onclick="document.location.href='http://www.google.com'" />
Run Code Online (Sandbox Code Playgroud)

(更改了href;它实际上指向了与表单操作相同的URL).

因为onclick事件在提交表单之前触发,我希望此代码将页面重定向到Google.com,从而停止执行页面并且永远不会提交表单.或者可能重定向到Google.com但仍然完成提交表单.

但是发生的事情似乎是重定向完全被忽略了,无论如何都要提交表单.为什么会这样?
我确认onclick事件发生得很好; 我将重定向移动到一个函数中并调用了函数onclick.在提交之前调用该函数就好了,但是重定向似乎被忽略了.

html javascript forms redirect submit

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

如何防止 NLog 处理引用库中的日志语句?

每当我们的 API 中发生错误时,我们最终都会因为一个错误而收到多封电子邮件。基于日志消息;我们可以看到这些其他电子邮件似乎正在生成,因为各种 Microsoft 库正在调用类似_logger.LogError我们自己的 _ 的东西logger.LogError,这在我们处理错误时发生。

例如,当数据库超时时,我们会看到来自这些不同类别的 4 封电子邮件:

  • Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware
  • Microsoft.EntityFrameworkCore.Database.Command
  • Microsoft.EntityFrameworkCore.Query
  • Web.Controllers.ErrorController(我们自己的异常处理程序;这是我们唯一想看到的)

最后一个是唯一一个具有我们自己的错误格式并包含有用信息(例如当前用户等)的一个。其他的仅包含堆栈跟踪,该跟踪已经包含在我们自己的格式化电子邮件中。

我们无法确定这些其他日志消息来自哪里;但我能想到的最有可能的是,在微软的库中,它们正在调用_logger.LogError(),而我们自己的 NLog 配置正在处理 ; 的所有实例LogError。而不是只处理我们自己的事情。

我们如何防止这些其他日志语句被记录,特别是通过电子邮件发送给我们?

这是我们在 Program.cs 中的设置:

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
                    WebHost.CreateDefaultBuilder(args)
                        .UseStartup<Startup>()
                         .ConfigureLogging(logging =>
                         {
                             logging.ClearProviders();
                             logging.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Trace);
                         })
                    .UseNLog();
Run Code Online (Sandbox Code Playgroud)

error-handling nlog .net-core asp.net-core microsoft-extensions-logging

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

UITableViewRowAnimationBottom不适用于最后一行

我在这里遇到了一个非常相似的问题:https://stackoverflow.com/questions/3160796/inserting-row-to-end-of-table-with-uitableviewrowanimationbottom-doesnt-animate,但没有给出答案.他的代码也和我的有点不同.

我有一个非常简单的例子,它是从导航应用程序模板构建的.

NSMutableArray *items;

- (void)viewDidLoad {
    [super viewDidLoad];
    items = [[NSMutableArray array] retain];
    self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addItem)] autorelease];
}

- (void)addItem{
    [items insertObject:@"new" atIndex:0];
    [self.tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:0 inSection:0]] withRowAnimation:UITableViewRowAnimationBottom];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return items.count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }

    cell.textLabel.text = [items …
Run Code Online (Sandbox Code Playgroud)

iphone objective-c uitableview ios

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

EntityFunctions.DiffHours方法如何工作?

我在文档中找不到任何解释此方法细节的内容.因为它总是返回一个整数,所以它不区分3:20的时差和3:10的时差.但它是向上舍入还是向下舍入,还是只比较2倍的小时部分?

示例:OpenTime = 2014-06-12 13:35:00.000 CloseTime = 2014-06-13 14:30:00.000

实际差异是24小时55分钟.这会返回24小时或25小时的差异吗?

我需要确定2次是否相隔25小时或更长时间; 我可以使用DiffHours,还是需要使用DiffSeconds并将结果除以3600以获得实际小时数?

.net datetime entity-framework timespan

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

在c#中舍入中点舍入选项

虽然我已经看到了关于四舍五入的几个问题,但我还没有找到答案.在C#/ .Net中有没有办法进行中点舍入?也就是说,如果小数位于2个整数之间,我想总是向上舍入.据我所知,这是一种常见的舍入方法,所以我很惊讶它没有列在标准的Math.Round选项中.

87.3 -> 87
87.8 -> 88
87.5 -> 88
-87.3 -> -87
-87.8 -> -88
-87.5 -> -87
Run Code Online (Sandbox Code Playgroud)

我能找到的最接近的是MidpointRounding.AwayFromZero,但这会错误地处理负片,因为它们会向下舍入而不是向上.

.net c# math rounding

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

当name是数字时,Resources.getIdentifier()具有意外行为

我使用Resources.getIdentifier动态加载字符串资源; 因为我动态传递了一个需要从我的资源文件中翻译的字符串.当资源不存在时返回0; 所以我处理了 但是,当我传入一个数字字符串时; 即使我没有在我的资源中定义,它返回我传入的数字而不是0.当我尝试获取该资源时,这会导致崩溃.

int identifier = context.getResources().getIdentifier(myText, "string", "com.farragut.android.emsspeak");
if (identifier > 0) {
    text2.setVisibility(View.VISIBLE);
    text2.setText(context.getResources().getString(identifier));
} else {
    text2.setVisibility(View.GONE);
}
Run Code Online (Sandbox Code Playgroud)

这个定义的行为?我无法想象为什么当myText是"BLAH"时它能正常工作,但是当myText为"12"时它就不同了.我唯一能想到的是测试myText是否是数字的; 虽然我能找到的唯一方法是尝试将其解析为整数并捕获numberFormatException.这是最好的解决方案吗?

string resources parsing android localization

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