Helo!
我在将一些数据从数组显示到NSTableView时遇到问题。 我将我的信息保存在核心数据中。我把这个信息添加到一个数组中,但是当我尝试在表中添加这个信息时,我收到的所有内容都是一个行数正确的表,但都有相同的隐式文本:" TableView Cell&#34 ;
对于每个表格列,我设置了一个标识符,我认为,我的绑定是正确的。 这是我的表控制器代码:
@IBAction func reload(sender: NSButton) {
tableView.reloadData()
}
func getItemsFromDataBase() {
let fetchRequest = NSFetchRequest(entityName: "MyData")
// Create a sort descriptor object that sorts on the "title"
// property of the Core Data object
let sortDescriptor = NSSortDescriptor(key: "nume", ascending: true)
// Set the list of sort descriptors in the fetch request,
// so it includes the sort descriptor
fetchRequest.sortDescriptors = [sortDescriptor]
if let fetchResults = managedObjectContext!.executeFetchRequest(fetchRequest, error: nil) as? [MyData] {
for var i = 0 ; i < fetchResults.count ; i++ {
objects.append(fetchResults[i]) //Get data from database and put in array
}
}
}
func numberOfRowsInTableView(tableView: NSTableView) -> Int {
getItemsFromDataBase()
showNames()
return objects.count
}
func tableView(tableView: NSTableView, objectValueForTableColumn tableColumn: NSTableColumn?, row: Int) -> AnyObject? {
let identifier = tableColumn?.identifier
println(identifier!)
if let propertyEnum = ArrayDisplayProperty(rawValue: identifier!) {
let cellView = tableView.makeViewWithIdentifier(identifier!, owner: self) as NSTableCellView
let object = objects[row]
switch propertyEnum {
case .Nume:
cellView.textField!.stringValue = object.nume
case .Prenume:
cellView.textField!.stringValue = object.prenume
case .Varsta:
cellView.textField!.stringValue = "\(object.varsta)"
case .Localitate :
cellView.textField?.stringValue = object.localitate
case .Major:
cellView.textField?.stringValue = object.major == 1 ? "Yes" : "No"
}
println(object.nume)
return object.varsta
}
return 0
}
答案 0 :(得分:1)
您是否仅限制该表列或文本字段和文本字段单元格?
这两个值都需要与表单元格视图一起使用模型键路径(假设您有实体Person,其属性为&#39; name&#39;)objectValue.name
。 Xcode显示一些警告&#39;无法解析输入的密钥路径&#39;但我认为可以忽略。
例如,如果我的实体Person
只有一个属性name
,我的绑定看起来就像是跟随数组控制器:
表视图 - &gt;表格内容 - &gt;内容 - &gt;使用控制器键arrangeObjects绑定到Array Controller
名称列 - &gt;价值&gt;使用控制器密钥arrangedObjects
和模型密钥路径name
文字字段 - &gt;价值 - &gt;使用模型关键路径objectValue.name
文本字段单元 - &gt;价值 - &gt;使用模型关键路径objectValue.name
答案 1 :(得分:0)
SWIFT代码: -
按照NSTableView
至bindings
中填充数据的步骤操作: -
1)将ArrayController连接到FileOwner / Appdelegate: -
2)选择你的TableColumns并绑定到ArrayController - &gt; arrangeObjects - &gt;键
3)现在在您的方法中按照以下代码: -
@IBOutlet weak var arrController : NSArrayController!
var yourArray: NSMutableArray = []
func applicationDidFinishLaunching(aNotification: NSNotification) {
// Insert code here to initialize your application
var dataArray = [["FirstName": "Debasis", "LastName": "Das"],
["FirstName": "Nishant", "LastName": "Singh"],
["FirstName": "John", "LastName": "Doe"],
["FirstName": "Jane", "LastName": "Doe"],
["FirstName": "Mary", "LastName": "Jane"]];
for var i = 0; i < dataArray.count; i++
{
yourArray.addObject(dataArray[i])
}
arrController.rearrangeObjects()
}