c语言ns图 帮我设计个ns图 只要ns图 谢谢 快点

09-0909-1509-1309-15
09-0209-0709-1510-28
◇本站云标签NSExpression - 博客 - 伯乐在线
& NSExpression
每当涉及查询或者整理信息时,Cocoa总是其他标准库羡慕的对象。通过使用NSPredicate,,以及偶尔使用NSFetchRequest,即使是最复杂的数据任务也可以被简化成为几行极其容易读懂的代码。
现在,NSHipster们无疑已经熟悉NSPredicate 了,不过如果我们更进一步看看NSPredicate,我们会发现NSPredicate其实是由更小的部分而组成:两个NSExpression(一个左手值和一个右手值),和一个运算符相比较(比如&,IN,LIKE等等)。
大多数开发者通过+predicateWithFormat:来使用NSPredicate,NSExpression是一个相对难懂的类。真可惜啊,因为NSExpression本身的功能非常强大。所以,亲爱的读者,请允许我来表达我对NSExpression深深的尊重和着迷:
关于NSExpression你所要知道的第一件事就是它的主要目的是减少表达。如果你思考一下评估NSPredicate的过程,你会发现它有两个表达和一个比较符号,所以我们需要将两个表达简化为运算符可以处理的表达–非常像编译一行代码的过程。
这就是我们要学习的NSExpression的第一招: 做数学题。
NSExpression *expression = [NSExpression expressionWithFormat:@&4 + 5 - 2**3&];
id value = [expression expressionValueWithObject:nil context:nil]; // =& 1
这并不是,但是如果加入评估数学表达式对于你的应用很有用的话,那么…你就可以使用NSExpression。
我们仅仅触及了NSExpression的表面。觉得一台电脑仅仅做小学数学不怎么厉害?那高中的统计学怎么样?
NSArray *numbers = @[@1, @2, @3, @4, @4, @5, @9, @11];
NSExpression *expression = [NSExpression expressionForFunction:@&stddev:& arguments:@[[NSExpression expressionForConstantValue:numbers]]];
id value = [expression expressionValueWithObject:nil context:nil]; // =& 3.21859...
NSExpression 函数以给定数目的子表达式作为参数。比如,在上述例子中,要得到集合的标准差,数列中的数字要被+expressionForConstantValue:封装。虽然只是一个小小的不便(它最终却能使得NSExpression变得极其灵活),却足以使第一次尝试它的人绊倒。
如果你觉得 (@avg,@sum等等)不够用,也许NSExpression的自带的统计,算术和位运算功能能激起你的兴趣。
要注意的是:根据中的表格,很明显,Mac OS X & iOS的功能可用性之间没有重叠。看起来最近的iOS版本的确支持如stddev之类的函数,但这些变化并没有显示在头文件或者文档里。如果你注意到任何变化,请以告诉我,不胜感激。
这些函数需要用两个NSExpression对象来表达数字。
from:subtract:
multiply:by:
divide:by:
modulus:by:
raise:toPower:
ceiling: – (不小于数组中的值的最小积分值)
trunc: – (最接近但不大于数组中的值的积分值)
与math.h函数类似的函数
ceiling非常容易和ceil(3)混淆。ceiling作用于数字数组,而ceil(3)作用于一个double值(且它并没对应的内置NSExpression函数)。floor:在这里的作用和floor(3)一样。
两个变量–一个带参数,一个不带参数。不带参数时,random返回rand(3)的等值,而random:则从NSExpression的数字数组中取任意元素。
二进制运算
bitwiseAnd:with:
bitwiseOr:with:
bitwiseXor:with:
leftshift:by:
rightshift:by:
onesComplement:
字符串函数
lowercase:
uppercase:
自定义函数
除了这些内置的函数,你也可以在NSExpression中调用自定义函数。由Dave DeLong所撰写的这篇文章( ) 详述了这个过程。
首先,在类别中定义一个对应的函数:
@interface NSNumber (Factorial)
- (NSNumber *)
@implementation NSNumber (Factorial)
- (NSNumber *)factorial {
return @(tgamma([self doubleValue] + 1));
然后,这样使用函数(+expressionWithFormat: 中的FUNCTION()宏是构造-expressionForFunction:等等的过程的简写。):
NSExpression *expression = [NSExpression expressionWithFormat:@&FUNCTION(4.2, 'factorial')&];
id value = [expression expressionValueWithObject:nil context:nil]; // 32.578...
这样的优势在于, 通过直接调用-factorial,我们可以调用NSPredicate查询中的函数。比如,我们可以定义一个location:withinRadius:方法来轻松的查询用户当前位置附近的管理对象。
正如Dave在他的文章中所提到的那样,这些用例十分边缘化,但它们肯定可以成为你的保留节目中有趣的技巧。
可能感兴趣的话题
关于伯乐在线博客
在这个信息爆炸的时代,人们已然被大量、快速并且简短的信息所包围。然而,我们相信:过多“快餐”式的阅读只会令人“虚胖”,缺乏实质的内涵。伯乐在线博客团队正试图以我们微薄的力量,把优秀的原创/译文分享给读者,做一个小而精的精选博客,为“快餐”添加一些“营养”元素。
新浪微博:
推荐微信号
(加好友请注明来意)
– 好的话题、有启发的回复、值得信赖的圈子
– 分享和发现有价值的内容与观点
– 为IT单身男女服务的征婚传播平台
– 优秀的工具资源导航
– 翻译传播优秀的外文文章
– 国内外的精选文章
– UI,网页,交互和用户体验
– 专注iOS技术分享
– 专注Android技术分享
– JavaScript, HTML5, CSS
– 专注Java技术分享
– 专注Python技术分享
& 2016 伯乐在线
赞助云主机C语言程序设计课件第2章_算法_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
C语言程序设计课件第2章_算法
上传于||暂无简介
大小:965.50KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢NSFormatter - 博客 - 伯乐在线C语言与程序设计方法(一)(1)_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
C语言与程序设计方法(一)(1)
上传于||文档简介
&&江​西​财​经​大​学​ ​工​科​专​升​本​C​程​序​设​计​ ​标​准​课​件
大小:3.45MB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢}

我要回帖

更多关于 快点告诉你 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信