我在OSX上使用Swift中的绑定做一个简单的测试程序.有一个NSTableView,NSArrayController和一个模型类我尝试将它们连接在一起,但没有成功!构建编译但立即给出此错误: 线程1:EXC_BAD_ACCESS(代码= 1,地址= 0x0)
代码如下所示:
model class:
import Foundation
class Name {
var firstName = "Brook"
var lastName = "Brooklyn"
}
Run Code Online (Sandbox Code Playgroud)
视图控制器:
import Cocoa
class ViewController: NSViewController {
dynamic var names = [Name]() // serves as the content for Array-Controller
override func viewDidLoad() {
super.viewDidLoad()
// populate array
var name1 = Name()
var name2 = Name()
names.append(name1)
names.append(name2)
}
override var representedObject: AnyObject? {
didSet {
// Update the view, if already loaded.
}
}
Run Code Online (Sandbox Code Playgroud)
}
我已经设置了数组控制器来使用我的类"Name"并添加了键"firstName"和"lastName"
这是故事板:

有没有人在Xcode 6 …
我在模型上有一个计算属性,为了计算我需要一个来自控制器的属性(而不是控制模型的属性).我知道有,needs:但这只是在
控制器级别.
我如何从管理模型的控制器以外的控制器获取Ember中的属性?
我正在尝试做一些像[问这个问题] [1]那样的格式,但我没有成功那里的建议.
所以我尝试使用计算属性对模型进行格式化,但为了计算该属性,我需要来自控制器的另一个属性.
任何帮助是极大的赞赏!谢谢!
注意:我正在使用EmberData来管理模型.
编辑:
为了澄清我正在尝试做的事情,我设置了一个
以一般方式显示问题的示例:示例应用程序允许您输入数字,存储它们,
并在列表中显示它们.您还可以输入"转换因子",它不会更改模型数据本身,但会更改模板上的表示.比如说,您输入数字2,保存在模型上,但是当它显示在列表中时,它会使用您之前输入的转换因子进行"格式化",并且计算出的值会显示在模板中.问题是我想要格式化的值存储在不同的控制器上.这是我到目前为止所尝试的:
#1方法:
ArrayController上的计算属性 - needs:在控制器中使用遍历并获取值
- > jsfiddle
我遇到的问题:ArrayController
似乎中断,模板呈现就像根本没有存储的记录一样(注意:该示例使用本地存储,因此创建一些记录并取消注释ArrayController上的计算属性,您将看到它最初按预期工作并显示您输入的记录).
#2方法:
模型本身的计算属性
- > jsfiddle
我遇到的问题:
我不知道如何在模型内部从控制器获取属性
needs:控制器如果有人知道如何解决这个问题或者能指出我正确的方向会很棒.非常感谢您的帮助!谢谢你的时间!
我试图循环我从另一个控制器获取的内容并修改一些属性forEach().但是这不起作用,并且在forEach循环中获取属性的任何尝试都会返回undefined.
所以这就是我试图做的事情:
this.get("controllers.index.arrangedContent").我的模特:
App.Data = DS.Model.extend({
name: DS.attr('string')
});
Run Code Online (Sandbox Code Playgroud)在我的控制器中:
App.StartController = Ember.ObjectController.extend({
needs: 'index',
alert: function() {
// get the "content" from the IndexController;
var names = this.get("controllers.index.arrangedContent");
var formattedNames = [];
names.forEach(function(item) {
var name = item.name; // <--returns "undefined"
name += "!";
formattedNames.push(name);
});
alert(formattedNames[0] );
}
});
Run Code Online (Sandbox Code Playgroud)
问题:有没有办法在forEach循环中访问属性"name" ,返回存储在模型上的正确值?
注意:首先我认为这将是本地存储适配器上的错误,所以我尝试使用后端的"fixture适配器",但这也不起作用.
但是,如果我在路由器上硬编码一些模型实例,如:
App.IndexRoute = Ember.Route.extend({
model: function() {
return [Ember.Object.create({id: 523, name: "John"}), …Run Code Online (Sandbox Code Playgroud)