小编And*_*rew的帖子

iOS 7 UIDatePicker高度不一致?

在iOS 7中使用带有Storyboard的UIDatePicker元素时,我遇到了一些奇怪的事情.在故事板中,日期选择器的固定高度为162.但实际上,元素占用的空间比这要多.所以这

故事板

变成这样:

模拟器

因此,我必须将其下方的所有内容都移动下来,猜测并注意日期选择器实际使用的空间.这是一个错误吗?难道我做错了什么?要明确的是,日期选择器是完全透明的 - 无法找到解决方法.顶部的白色背景是主要的UIView,灰色背景是嵌入容器视图内的UITableView的背景.

iphone uikit ios uistoryboard ios7

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

PHP"或"语法

我已经看过很多了:$fp = fopen($filepath, "w") or die(); 但我似乎无法找到关于这种"或"语法的任何真实文档.它的功能显而易见,但我可以在任何地方使用它吗?它一定要跟着die()吗?or当你可以使用类似的东西时,是否有任何需要注意的事项

if (file_exists($filepath))
   $fp = fopen($filepath,"r");
else
   myErrMessage();
Run Code Online (Sandbox Code Playgroud)

我知道这似乎是一个愚蠢的问题,但我找不到任何严格的规则.谢谢.

php syntax control-structure program-flow or-operator

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

C#编译器会优化此代码吗?

我经常遇到这种情况.乍一看,我认为,"这是糟糕的编码; 我正在执行一个方法两次并且必然会得到相同的结果."但是在想到这一点时,我不得不怀疑编译器是否像我一样聪明并且可以得出相同的结论.

var newList = oldList.Select(x => new Thing {
    FullName = String.Format("{0} {1}", x.FirstName, x.LastName),
    OtherThingId = x.GetOtherThing() != null : x.GetOtherThing().Id : 0 // Might call x.GetOtherThing() twice?
});
Run Code Online (Sandbox Code Playgroud)

编译器的行为是否依赖于GetOtherThing方法的内容?说它看起来像这样(有点类似于我现在的真实代码):

public OtherThing GetOtherThing() {
    if (this.Category == null) return null;
    return this.Category.OtherThings.FirstOrDefault(t => t.Text == this.Text);
}
Run Code Online (Sandbox Code Playgroud)

这将禁止对这些对象来自的任何商店进行非常糟糕的异步更改,如果连续运行两次,肯定会返回相同的内容.但如果它看起来像这样(为了论证而荒谬的例子):

public OtherThing GetOtherThing() {
    return new OtherThing {
        Id = new Random().Next(100)
    };
}
Run Code Online (Sandbox Code Playgroud)

连续两次运行会导致创建两个不同的对象,并且很可能具有不同的ID.编译器在这些情况下会做什么?它是否像我在第一个清单中所展示的那样低效?

自己做一些工作

我运行了与第一个代码清单非常相似的东西,并在GetOtherThing实例方法中添加了一个断点.断点被击中一次.所以,看起来结果确实是缓存的.在第二种情况下会发生什么,该方法可能每次返回不同的东西?编译器会不正确地优化?我发现结果有什么警告吗?

编辑

那个结论无效.请参阅@ usr的答案下的评论.

.net c# compiler-construction optimization

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

.NET中的用户友好属性名称,与Rails中的属性名称相同

在Ruby on Rails中,配置中有一个YAML文件,允许您定义模型属性名称的纯英文版本.实际上,它允许您定义普通任意语言版本:它是国际化内容的一部分,但大多数人将其用于向用户显示模型验证结果等内容.

我在.NET MVC 4项目中需要这种功能.用户提交表单并收到他们发布的几乎所有内容的电子邮件(表单绑定到模型).我编写了一个帮助方法,通过反射来转储属性/值对的HTML表,例如

foreach (PropertyInfo info in obj.GetType()
    .GetProperties(BindingFlags.Public | 
                   BindingFlags.Instance | 
                   BindingFlags.IgnoreCase)) 
{
  if (info.CanRead && !PropertyNamesToExclude.Contains(info.Name)) 
  {
    string value = info.GetValue(obj, null) != null ? 
                                            info.GetValue(obj, null).ToString() :
                                            null;
    html += "<tr><th>" + info.Name + "</th><td>" + value + "</td></tr>";
  }
}
Run Code Online (Sandbox Code Playgroud)

但是,当然,这info.Name可能会像"OrdererGid"那样打印出来,或许"Orderer用户名"会更好.在.NET中有这样的东西吗?

.net c# asp.net-mvc

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

React Hooks 的 Keydown/up 事件无法正常工作

我正在尝试为我正在开发的游戏创建基于箭头的键盘控件。当然,我正在努力与 React 保持同步,所以我想创建一个函数组件并使用钩子。我为我的错误组件创建了一个JSFiddle

它几乎按预期工作,除非我同时按下很多箭头键。然后似乎keyup没有触发某些事件。也可能是“状态”未正确更新。

我喜欢这样:

  const ALLOWED_KEYS = ['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight']
  const [pressed, setPressed] = React.useState([])

  const handleKeyDown = React.useCallback(event => {
    const { key } = event
    if (ALLOWED_KEYS.includes(key) && !pressed.includes(key)) {
      setPressed([...pressed, key])
    }
  }, [pressed])

  const handleKeyUp = React.useCallback(event => {
    const { key } = event
    setPressed(pressed.filter(k => k !== key))
  }, [pressed])

  React.useEffect(() => {
    document.addEventListener('keydown', handleKeyDown)
    document.addEventListener('keyup', handleKeyUp)

    return () => {
      document.removeEventListener('keydown', handleKeyDown)
      document.removeEventListener('keyup', handleKeyUp)
    }
  })
Run Code Online (Sandbox Code Playgroud)

我的想法是我做对了,但是作为钩子的新手,很可能这就是问题所在。特别是因为我重新创建了与基于类的组件相同的组件: …

javascript keyboard-events reactjs react-hooks

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

单击发布时:执行发布时出现异常:已添加具有相同键的项

我意识到有十亿人问过这个错误,但我已经看过了所有这些错误.我看似不同.我没有得到任何类型的源代码错误,没有堆栈跟踪,没有任何有用的信息,因为在我的MVC.NET项目上单击"发布"时会立即发生错误.它只是一个对话框,就是这样.没有其他事情发生.

可能相关的事情:

  • 我正在使用Team Foundation.我有一些麻烦(用户错误)一段时间,但我只是回到应有的方式(我认为).
  • 有一次,我使用了EDMX.我删除了支持从头开始制作我的表模型.
  • 我再也找不到我的出版资料,也无法弄清楚如何制作新的出版资料.我以为它应该在一个~/PublishProfiles文件夹中.它不在那里.

我知道我没有提供很多信息,但我甚至不知道从哪里开始.我很乐意根据要求提供其他任何东西.谢谢.

编辑
我应该注意它在localhost服务器上构建和运行完美.

编辑2
我回滚到源代码控制上最老的版本,它工作.我想我可以煞费苦心地完成每个变更集.另外,我确实找到了PublishProfiles文件夹.我确认没有对配置文件进行任何更改.

asp.net asp.net-mvc entity-framework msdeploy visual-studio

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

例如,如何将DbSet转换为下拉列表?

我试图绕过所有这些ViewModel的东西并以正确的方式做事.我有几个模型通过Entity Framework链接到SQL表,如下所示:

[Table("HardwareOptions", Schema = "dbo")]
public class HardwareOption {
  [Key]
  public int RecordID {get; set;}
  [ForeignKey("Configuration")]
  public string Configuration {get; set;}
  public string ComputerManufacturer {get; set;}
  public string ComputerModel {get; set;}
  public string ComputerDescription {get; set;}
  public int MonitorCount {get; set;}
  public string MonitorManufacturer {get; set;}
  public string MonitorModel {get; set;}
  public string MonitorDescription {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

我有一个这样的视图模型:

public class OrderIndexViewModel {
  public Customer Customer {get; set;}
  public MetaUser MetaUser {get; set;}
  public DbSet<HardwareOption> HardwareOptions {get; set;}
  public DbSet<Machine> …
Run Code Online (Sandbox Code Playgroud)

.net c# asp.net asp.net-mvc entity-framework

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

函数数组的逻辑运算符

我有一段时间有这个想法,我很好奇是否有可能以有价值的方式实施.我想获取一个布尔返回的lambda表达式数组,并对其结果执行逻辑运算.这是一个有效列表的无意义的例子:

var tests = new List<Func<int, bool>>() {
    (x) => x > 10,
    (x) => x < 100,
    (x) => x != 42
};
Run Code Online (Sandbox Code Playgroud)

我想做的主要是

bool result = tests.And();
Run Code Online (Sandbox Code Playgroud)

或执行其他逻辑操作.我意识到我可以写一个IEnumerable实现类并执行此操作,但我想知道它是否已经完成.显然,实现必须以同样的方式有效地工作,短路

if (truthyExpression || falseyExpression)
Run Code Online (Sandbox Code Playgroud)

永远不会开始评估falseyExpression.

我在框架中看到的唯一可能有用的是Bit Array,但是我不确定如何在不预先评估每个表达式的情况下使用它,从而破坏了短行程的有用性.

.net c# arrays lambda logic

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