Key-Value Coding 中文翻译-2

集合操作符

集合操作符是一个项目符号,它利用关键路径对集合中的元素进行操作。下面阐释有效的集合操作符,关键路径应用实例,以及他们产生的结果。
集合操作符是关键路径,它作为 valueForKeyPath:方法参数。操作符字符串以符号@为开头,关键路径集合在操作符的左边,数组和集合都适用于操作符,在操作符的右边是一个集合属性列表。
实例1 操作关键路径格式

这里写图片描述

除了@count操作符以外,都有一个集合属性列表在操作符的右边。

注意:目前是不支持自定义操作符的。

操作符返回结果有几种类型:
- 简单的操作符,返回字符串,数字或者日期,主要依靠右边的关键字(参考简单操作符)
- 对象操作符返回一个数组实例,参考对象操作符
- 数组和集合返回一个数组或者集合,参考数组和集合操作符

简单集合运算符

例子:Transactions对象数据
这里写图片描述
在数组或者集合中,简单集合运算符对运算左边的属性进行操作。

@avg

@avg操作符使用valueForKeyPath: 函数,以关键路径为参数,返回在操作位右边属性的平均值,类型为double,这个值被NSNumber包装。如果值为nil,将会以0替代。

NSNumber *transactionAverage = [transactions valueForKeyPath:@"@avg.amount"];

transactionAverage is $456.54

@count
@count操作符返回在操作符左边的关键路径指定的对象的个数(NSNumber对象),操作符右边关键路径被忽略。

NSNumber *numberOfTransactions = [transactions valueForKeyPath:@"@count"];

numberOfTransactions is 13.

@max
@max操作符通过比较操作符右边指定的属性的值,来返回一个最大值。通过对象的compare:方法来比较 根据指定的关键路径来决定最大值。这个参与比较的对象的属性必须支持相互比较。如果操作符右边关键路径指定的值是nil,将会忽略。

NSDate *latestDate = [transactions valueForKeyPath:@"@max.date"];

latestDate is Jul 15, 2010

@min

NSDate *earliestDate = [transactions valueForKeyPath:@"@min.date"];

earliestDate is Dec 1, 2009

@sum
@sum返回操作符右边关键路径指定的属性的值的和,将每一个数值转成double类型,在计算值的和,其结果被包装在一个NSNumber对象中,如果操作符右边关键路径指定的值是nil,将被忽略.

NSNumber *amountSum = [transactions valueForKeyPath:@"@sum.amount"];

amountSum is $5,935.00.

对象操作符

@distinctUnionOfObjects
@distinctUnionOfObjects操作符根据操作符右边的关键路径指定的属性返回一个包含不同对象的数组。

NSArray *payees = [transactions valueForKeyPath:@"@distinctUnionOfObjects.payee"];

payees数组包含字符串: Car Loan, General Cable, Animal Hospital, Green Power, Mortgage.
@unionOfObjects操作符和它类似,但是不会移除相同对象的副本。
注意:如果右关键路径的属性为nil,则会抛出一个异常。

数组和集合操作符

数组和集合操作符能在集合中嵌套操作,这个集合中的每一个元素也是一个集合。
arrayOfTransactions变量在每个操作符中都有使用。它是一个包含transaction对象的2个数组的数组。

// Create the array that contains additional arrays.

self.arrayOfTransactionsArray = [NSMutableArray array];



// Add the array of objects used in the above examples.

[arrayOfTransactionsArray addObject:transactions];



// Add a second array of objects; this array contains alternate values.

[arrayOfTransactionsArrays addObject:moreTransactions];

transaction包含上图中的数据,moreTransactions包含下图中的数据。
moreTransactions数组中的数据

@distinctUnionOfArrays
@distinctUnionOfArrays操作符根据操作符右边的关键路径指定的属性返回一个包含不同对象的数组

NSArray *payees = [arrayOfTransactionsArrays valueForKeyPath:@"@distinctUnionOfArrays.payee"];

结果:payees数组包含下列值:Hobby Shop, Mortgage, Animal Hospital, Second Mortgage, Car Loan, General Cable - Cottage, General Cable, Green Power
@unionOfArrays和它类似,只是不移除副本。
注意:如果右关键路径的属性为nil,则会抛出一个异常。

@distinctUnionOfSets
@distinctUnionOfSets操作符返回一个包含不同对象的集合,根据操作符右边的关键路径指定的属性。
和@distinctUnionOfArrays类似,除了返回一个集合而不是数组。
@distinctUnionOfArrays

利用 TensorFlow 训练自己的目标识别器。本文内容来自于我的毕业设计,基于 TensorFlow 1.15.0,其他 TensorFlow 版本运行可能存在问题。.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值