【问题标题】:How to get some values from CoreData-Entities to code如何从 CoreData-Entities 获取一些值到代码中
【发布时间】:2009-01-29 20:33:13
【问题描述】:

我在我的 CoreData 应用程序中创建了一个具有一些属性的实体。想象一个 tableview 和一个绑定的 NSArrayController。我创建(和编辑)我的实体“实例”。我的问题是如何将这些属性的值添加到我的代码中。如有更多问题:http://twitter.com/xP_ablo

【问题讨论】:

    标签: cocoa core-data key-value-observing nsarraycontroller


    【解决方案1】:

    您需要以某种方式获取对 NSArrayController 的引用。如果您自己加载 NIB,则可以将 IBOutlet 实例添加到设置为 NIB“文件所有者”的类中。当您加载一个 nib 时,您将提供该 NIB 的“文件所有者”类的实例作为所有者。如果您没有自己加载 NIB(即它由 Cocoa 作为应用程序的 MaineMenu nib/xib 自动加载),则在 nib 中创建您自己的类的实例并将 IBOutlet 添加到该实例。您可以像这样在您的班级中创建一个 IBOutlet:

    @interface MyClass : NSObject { //of course your class doesn't have to be a direct descendent of NSObject
        IBOutlet NSArrayController *arrayController;
    }
    
    @property (retain,nonatomic,readwrite) IBOutlet NSArrayController *arrayController;
    
    ...
    
    @end
    
    @implementation
    @synthesize arrayController;
    
    - (void)dealloc {
        [arrayController release];
        [super dealloc];
    }
    @end
    

    将您的类中的 IBOutlet 连接到 NSArrayController(在第一种情况下按住 Controll 单击文件所有者或在上述第二种情况下单击您的类的实例)并拖动到 NSArrayController。当您释放鼠标时,您将在拖动源中弹出 IBOutlets。选择您创建的 IBOutlet(例如上例中的“arrayController”)。

    一个笔尖被加载(即在你的类中调用awakeFromNib之后),你可以通过插座访问arrayController:

    NSArray *content = [[self arrayController] arrangedObjects];
    

    你现在可以对数组中的值做你想做的事了。

    【讨论】:

    • 如果您不自己加载笔尖,那么说您不需要@property 和@synthesize 是否正确?
    • NIB 加载代码将直接连接实例变量,但根据 mmalc 的说法,使用上面显示的模式是唯一保证在 GC 和非 GC 环境中正确处理内存管理的模式。
    【解决方案2】:

    如果我没看错,你有一个 TableView,绑定到一个绑定到你的数据的 NSArrayController。

    简单的方法:在您的类(通常是文件的所有者)中创建一个 IBOutlet,然后在 Interface Builder 中将此 IBOutlet 连接到 NSArrayController。然后你可以从这个数组中获取你需要的值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-26
      • 1970-01-01
      • 1970-01-01
      • 2018-09-20
      • 2019-04-01
      • 2012-05-17
      相关资源
      最近更新 更多