所以我是OO编程的新手。来自WebDesign背景,并且在我的项目中需要的任何地方完成了大部分设计工作或一些或多或少的中间脚本。但渴望学习并仍在寻找"权利"方式;-)做你们这样做的事情。不是我的脚本Kiddie Mind告诉我的:D。很抱歉,如果这真的是一个超级初学者的问题,但我宁愿抓住"对"概念从一开始。
我根据位于我的文档目录中的文件夹的内容,以编程方式使用NSMenuItems填充NSMenu。我正在遍历这个人的子文件夹,获取每个人的URL,使用
提取文件夹名称let folder = el.URLByDeletingPathExtension?.lastPathComponent
并根据这些名称创建NSMenuItems
let menuItem = statusMenu.insertItemWithTitle(folder!, action: #selector(StatusMenuController.doFancyStuff), keyEquivalent: "", atIndex:0)"
到目前为止一切顺利。现在,我将如何将关联的URL与MenuItem一起存储以供以后使用,例如在触发操作时操纵它?
点击项目,我想要执行一项操作,当然需要完整的文件夹URL。我的第一个想法是使用名为" path"的新变量扩展NSMenuItem。或者。但由于扩展中不允许存储值,因此这是一个死胡同。
你是如何真正的程序员处理这种情况的?使用字典并存储项目及其各自的URL?可以工作吗?但这是正确的方法吗?或者通过获取MenuItems标题和"重新附加"来获取完整的URL。它到basefolder URL?这也可行。或者您将URL传递给将作为属性调用的方法/操作?我真的很想远离凌乱的代码:)所以你非常感谢你的专业见解。
谢谢你的时间! 安迪
答案 0 :(得分:0)
NSMenuItem
有一个属性representedObject
,可用于此目的。
来自文档:
通过为菜单项设置一个代表对象,你可以创建一个 菜单项和该对象之间的关联。代表 对象作为一种更具体的标记形式,允许您使用 将任何对象,而不仅仅是任意整数,与其中的项相关联 菜单。
如果您想存储的信息不仅仅是网址,您还可以将Array
或Dictionary
等集合对象,甚至自定义类分配给representedObject
。