有没有办法做到这一点?我有一组项目,我想从另一组中排除.我知道我可以循环遍历我的集合中的每个项目,只将它添加到我的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)
这可以用谓词来完成吗?
我想创建一个自定义 AuthorizeAttribute 类,如下所述:Override Authorize Attribute in ASP.NET MVC。
诀窍是,用户是否被授权不仅取决于他正在执行的方法,还取决于参数:
[MyCustomAuthorize(id)]
[HttpGet]
public ActionResult File(Guid id)
{
}
Run Code Online (Sandbox Code Playgroud)
基本上,用户将被授权查看某些文件,但不能查看其他文件,因此我想将 id 传递给我的自定义授权属性。但我似乎无法这样做,因为名称“id”不在范围内。
我知道我可以执行逻辑来确保用户可以在方法开始时访问该文件,但是我有几种方法都需要完成此操作,如果我可以将其作为[授权] 属性。
我在一个正在研究的网站上遇到了这个奇怪的代码,并且不明白我所看到的行为是如何或为何发生的.
<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.在提交之前调用该函数就好了,但是重定向似乎被忽略了.
每当我们的 API 中发生错误时,我们最终都会因为一个错误而收到多封电子邮件。基于日志消息;我们可以看到这些其他电子邮件似乎正在生成,因为各种 Microsoft 库正在调用类似_logger.LogError我们自己的 _ 的东西logger.LogError,这在我们处理错误时发生。
例如,当数据库超时时,我们会看到来自这些不同类别的 4 封电子邮件:
最后一个是唯一一个具有我们自己的错误格式并包含有用信息(例如当前用户等)的一个。其他的仅包含堆栈跟踪,该跟踪已经包含在我们自己的格式化电子邮件中。
我们无法确定这些其他日志消息来自哪里;但我能想到的最有可能的是,在微软的库中,它们正在调用_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
我在这里遇到了一个非常相似的问题: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) 我在文档中找不到任何解释此方法细节的内容.因为它总是返回一个整数,所以它不区分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以获得实际小时数?
虽然我已经看到了关于四舍五入的几个问题,但我还没有找到答案.在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,但这会错误地处理负片,因为它们会向下舍入而不是向上.
我使用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.这是最好的解决方案吗?
.net ×2
ios ×2
objective-c ×2
.net-core ×1
android ×1
asp.net ×1
asp.net-core ×1
asp.net-mvc ×1
c# ×1
datetime ×1
forms ×1
html ×1
iphone ×1
javascript ×1
localization ×1
math ×1
microsoft-extensions-logging ×1
nlog ×1
nspredicate ×1
nsset ×1
parsing ×1
redirect ×1
resources ×1
rounding ×1
string ×1
submit ×1
timespan ×1
uitableview ×1