我是iOS编程的新手,但已经做了多年的SQL工作.我正在尝试使用Core Data来构建我的模型.在教程之后,我为我的应用程序创建了一个模式,该模式涉及许多不是双向的一对多关系.
例如,我有一个游戏实体和一个玩家实体.游戏包括一系列玩家.因为玩家可以参与多个游戏,所以反向关系没有任何意义,也不需要.
然而,当我编译我的应用程序时,我得到两种形式的一致性错误消息.有人说.
Game.players does not have an inverse; this is an advanced setting.
Run Code Online (Sandbox Code Playgroud)
真?这是一个"高级"功能,足以获得警告信息?我应该忽略这个消息,还是我真的在做错了,核心数据不是设计用的?
另一种是Misconfigured Property形式并记录文本:
Something.something should have an inverse.
Run Code Online (Sandbox Code Playgroud)
那为什么会这么想?
我找不到任何模式,为什么它选择一个错误消息而不是另一个.任何有关iOS newb的提示都将不胜感激.
这是在Xcode 5.0.2下.
这里有IOS编程的新手.
我正在查看基础类型数据参考,并开始使用NSInteger typedef,假设它将使我的应用程序更具可移植性.但是我经常使用16位和8位整数,我没有看到NSShort或NSByte.
为具有小范围的事物(例如0到12)分配32/64位变量似乎很浪费.
是否有为此定义的符号?
这不起作用 - 我总是抛出IllegalArgumentException,并提出"尝试合并分离并再次尝试删除"的建议.
@PersistenceContext private EntityManager em;
@Resource private UserTransaction utx;
public void delete(EN entity) {
if (entity == null) return; // null-safe
EN target = entity;
try {
if (!em.contains(entity)) {
System.out.println("delete() entity not managed: " + entity);
utx.begin();
target = em.merge(entity);
utx.commit();
System.out.print("delete() this entity should now be managed: " + em.contains(target));
}
utx.begin();
em.remove(target);
utx.commit();
} catch (RollbackException ex) {
Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, null, ex);
} catch (HeuristicMixedException ex) {
Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, null, ex);
} catch (HeuristicRollbackException ex) {
Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, …Run Code Online (Sandbox Code Playgroud) 我最不喜欢编写JSF 2.0表单的部分与处理各种输入元素的id属性有关.我一直无法在辅助bean中编写目标组件的clientID,特别是因为PrimeFaces tabView现在包含p:tab元素的id 作为clientID的一部分.我浪费了大量时间编码,测试,然后重新编码那些clientID.
它让人联想到旧式汇编语言编程,您必须为分支和循环生成大量标签名称.我已经做了足够的一生.
我尝试的一种方法是仅使用自动生成的id属性.例如,我的表单中的一行可能如下所示.
<h:outputLabel value="Full Name:" />
<p:inputText value="#{editUser.user.fullName}"
binding="#{editUser.compFullName}"/>
<p:message for="#{editUser.compFullName.clientId}" />
Run Code Online (Sandbox Code Playgroud)
请注意,我没有明确的id属性.然后在支持bean:
String clientID = getCompFullName().getClientId();
msg = new FacesMessage(FacesMessage.SEVERITY_INFO,
"Summary Message For Full Name", "Detail Message Full Name");
FacesContext.getCurrentInstance().addMessage(clientID, msg);
Run Code Online (Sandbox Code Playgroud)
这总是有效,即使组件具有复杂的clientID,例如当PrimeFaces将p:tab id插入clientID时.(从3开始).重新排列表单永远不会破坏任何东西.
然而,这是费力的,因为我必须创建UIComponent属性,getter和setter,并使用绑定属性将它们绑定在表单中.谁能建议更好的方法呢?
在我的应用程序中,我发现我的CDI托管bean之间有很多共同的方法,所以遵循DRY原则我想创建一个包含这些方法的超类.然后我会有十几个子课程.
所以超类不是抽象的 - 它有足够的功能来自己编写一个有用的页面.所以我有:
@Named
@RequestScoped
public class BasicBacking {
Run Code Online (Sandbox Code Playgroud)
是否可以使用它:
@Named
@RequestScoped
public class SpecialBacking extends BasicBacking {
Run Code Online (Sandbox Code Playgroud)
没有任何问题?如果我更改范围,例如:
@Named
@ViewScoped
public class ViewBacking extends BasicBacking implements Serializable {
Run Code Online (Sandbox Code Playgroud)
CDI规范是否提到了这一点?我在这里遇到麻烦吗?
我目前正在学习Angular 2,我正在研究警卫.我理解它们是如何工作的但我不明白为什么它们比仅仅禁用你不希望用户使用的导航控件更可取?
在我看来,你可以在拥有这些控件的组件中做到这一点.如果有一个单独的类实现CanActivate和CanDeactivate接口来驱动该逻辑,你会得到什么?防护组件似乎为坚果增加了很多复杂性.
有人能解释我错过了什么吗?
我正在研究一些我已经编写并开始工作的代码,我注意到了这一点:
@Component({
selector: 'app-doc-edit',
templateUrl: './doc-edit.component.html',
styleUrls: ['./doc-edit.component.css']
})
export class DocEditComponent implements OnInit {
...
@Input() id: number;
Run Code Online (Sandbox Code Playgroud)
该组件是这样调用的:
<app-doc-edit [id]="path.path.id">
</app-doc-edit>
Run Code Online (Sandbox Code Playgroud)
为什么组件的id输入不会出现问题?我的理解是,用户定义的 Angular 2 指令占用与标准 HTML 定义相同的名称空间,但此操作运行良好。
当然,我会解决这个问题(WebStorm 重构/重命名来救援),但现在我认为我对 Angular 2 工作的理解是错误的。谁能解释一下吗?
我目前在Angular 5应用程序中使用令牌(也称为会话ID),我将其传递到请求头中的后端,如下所示;
const headersForJSON: HttpHeaders = new HttpHeaders (
{
'Content-Type': 'application/json',
'Accept': 'application/json'
}
);
Run Code Online (Sandbox Code Playgroud)
每个请求都使用它.如果客户端有一个令牌(即用户已登录),那么我添加另一个这样的头;
this.headers = headersForJSON.set("Authorization", v.authtoken);
Run Code Online (Sandbox Code Playgroud)
除非用户重新加载应用程序或手动修改浏览器中的URL,否则这种方法非常有效.此外,如果用户右键单击路由器链接以打开另一个窗口/选项卡到应用程序中.
在这些情况下,Angular SPA环境丢失,并且authtoken变量未定义,因此没有任何内容可以发送到后端.
有没有一个标准的做法来解决这个问题?
我在使用Angular/Material时遇到了这个问题,但我认为这是一个普遍的HTML问题.我没有运气找到可以解释它的参考.
什么是潜在的功能差异
<mat-table [dataSource]="data">
...
</mat-table>
Run Code Online (Sandbox Code Playgroud)
而不是
<table mat-table [dataSource]="data">
...
</table>
Run Code Online (Sandbox Code Playgroud)
它们似乎都是一样的.至少我发现除了CSS元素引用的编码方式之外没有任何区别.但是,为什么这些备用编码首先存在的背景是什么?