你如何在objective-c中的方法之间发送“数据集”.例如,在C#中,您可以使用数据填充自定义类,并在类型自定义类的List中传递它. EG如果您有客户类,您可以执行以下 *** 作:
List<Customer> customers = DataLayer.GetAllCustomers();
我可以看到如何在obj-c中完成这一 *** 作的唯一方法是使用自定义对象填充NSArray?这是一种有效的做事方式吗?还有其他建议吗?我使用sqlite作为我想要返回的数据库/数据.
解决方法 你走在正确的轨道上.Cocoa的集合类 – 它们都具有可变的不可变变量 – 是:
> NSArray:有序,可以多次包含一个对象
> NSDictionary:无序,从键映射到值,键被复制
> NSSet:无序,只能包含一次对象
> NSCountedSet:无序,可以多次包含一个对象
不可变的变体对效率有很大帮助.具有可变变体的类的访问器的标准模式是复制而不是保留.这是通过在属性上使用copy属性在@property机制中编写的:
// Department.h@interface Department : NSObject@property (reaDWrite,copy) NSSet *employees;@end
这意味着如果您将一个可变数组传递给一个接受数组的东西,它将被复制,如果您将其传递给其他东西,它将被再次复制.诀窍是虽然“复制”一个不可变对象实际上只是保留它,所以你只需要点击第一个副本.你可能想要第一次创建一个副本,这样你就不会将一个可变数组传递给其他东西,然后在你传递给它的任何东西背后改变它.
对于Mac OS X上的Cocoa,我也强烈建议您查看Core Data.它可以替代您可能习惯于.NET / ADO /等的“数据集”模式.使用Core Data,您不会“获得所有客户”,然后传递该集合.相反,您会查询您关注的客户,并且当您遍历您查询过的对象的关系时,其他对象将自动为您拉入.
核心数据还可以为您提供诸如实体的可视化建模,自动生成属性获取器等功能. setter,从一个模式版本到另一个模式的迁移的细粒度控制,等等.
总结以上是内存溢出为你收集整理的objective-c – 传递数据集全部内容,希望文章能够帮你解决objective-c – 传递数据集所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)