Jam*_*rue 8 sqlite macos cocoa objective-c
最后一次思考我的一个问题.我主要是一个.net开发人员,他涉猎到面向iPhone和Mac的Objective-C.
你如何在objective-c中的方法之间发送"数据集".例如,在C#中,您可以使用数据填充自定义类,并在类型自定义类的List中传递它.EG如果您有客户类,您可以执行以下操作:
List<Customer> customers = DataLayer.GetAllCustomers();
Run Code Online (Sandbox Code Playgroud)
我可以看到如何在obj-c中完成这一操作的唯一方法是使用自定义对象填充NSArray?这是一种有效的做事方式吗?还有其他建议吗?我使用sqlite作为我想要返回的数据库/数据.
Chr*_*son 24
你走在正确的轨道上.
Cocoa的集合类 - 它们都具有可变的不可变变量 - 是:
不可变的变体对效率有很大帮助.具有可变变体的类的访问器的标准模式是复制而不是保留.@property通过使用copy属性上的属性,这在机制中被编码:
// Department.h
@interface Department : NSObject
@property (readwrite, copy) NSSet *employees;
@end
Run Code Online (Sandbox Code Playgroud)
这意味着如果您将一个可变数组传递给一个接受数组的东西,它将被复制,如果您将其传递给其他东西,它将被再次复制.诀窍是虽然"复制"一个不可变对象实际上只是保留它,所以你只需要点击第一个副本.你可能想要第一次创建一个副本,这样你就不会将一个可变数组传递给其他东西,然后在你传递给它的任何东西后面改变它.
对于Mac OS X上的Cocoa,我也强烈建议您查看Core Data.它可以替代您可能习惯使用.NET/ADO /等的"数据集"模式.使用Core Data,您不会"获得所有客户",然后传递该集合.相反,您会查询您关注的客户,并且当您遍历您查询过的对象的关系时,其他对象将自动为您拉入.
Core Data还为您提供了诸如实体的可视化建模,自动生成属性获取器和设置器,对从一个模式版本到另一个模式的迁移的细粒度控制等功能.
| 归档时间: |
|
| 查看次数: |
2919 次 |
| 最近记录: |