快速求和 NSSet 中所有对象的属性的方法?

发布于 2024-07-27 17:24:30 字数 223 浏览 9 评论 0原文

我认为有一种方法可以快速要求 NSSet 轮询其成员并返回其每个对象中的 NSInteger 属性的总和,但我很可能是将此与 Mac OS X 方面的事情混淆。 Cococa Touch 中存在这个吗?

我能找到的最接近的东西是objectEnumerator,我想我可以遍历每个对象并增加我自己的变量。 是否存在更好的方法?

I thought there was a way to quickly ask a NSSet to poll its members and return a sum of say an NSInteger property in each of its objects, but I may very well be confusing this with the Mac OS X side of things. Does this exist in Cococa Touch?

The closest thing I can find is objectEnumerator, whereby I suppose I could rifle through each object and increment my own variable. Does the better way exist?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

念﹏祤嫣 2024-08-03 17:24:30

如果您尝试查找符合 KVC 的数组/集派生类 (theSet) 的每个成员的给定属性 (theIntegerPropertyToSum) 的总和,您可以可以执行以下操作:

NSNumber* theSum = [theSet valueForKeyPath:@"@sum.theIntegerPropertyToSum"];

If you're trying to find the sum of a given property (theIntegerPropertyToSum) for each member of an array/set-derived class that's KVC-compliant (theSet), you can do the following:

NSNumber* theSum = [theSet valueForKeyPath:@"@sum.theIntegerPropertyToSum"];
浪菊怪哟 2024-08-03 17:24:30

为什么不使用简单的目标 C (2)?

NSInteger theSum = 0;
for (id obj in theSetOrArray)
    theSum += obj.theIntegerPropertyToSum;

坏处:
如果你喜欢计算行数,那么这看起来会更长。 是否还有其他缺点 - 我想知道对于不具有所需“theIntegerPropertyToSum”属性的对象,KVC 方法会发生什么情况?

优势:
我敢打赌,这样调试和性能测试会更容易。 另外,当其他人在一两年内阅读你的代码时,他们就会知道这里发生了什么 - 无论他们是否见过一行 Objective C,这看起来就像实际发生的事情。

Why not use plain objective C (2)?

NSInteger theSum = 0;
for (id obj in theSetOrArray)
    theSum += obj.theIntegerPropertyToSum;

Disadvantage:
If you like to count lines, then this looks longer. Are there other disadvantages - I wonder what happens with the KVC method with objects that don't have the required 'theIntegerPropertyToSum' property?

Advantage:
I would bet that this debugs and performance tests easier. Plus when someone else reads your code in a year or two they will know what is going on here - whether they have ever seen a line of objective C or not, this looks like what is actually happening.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文