将实例的一个属性与一组其他实例进行比较

2023-12-15

我正在尝试编写一个实例方法Card将单张卡与数组进行比较的类。该类具有一些属性,例如:shape and color. The otherCards数组中充满了此类的其他实例,这些实例也有它们的shapes and colors.

现在,我想编写一个可以单独检查所有这些属性的方法。我如何传递特定属性,如:[allAttributesIsEqual:otherCards compareWith: self.shape]?所以我可以通过self.shape or self.color实际比较时?

- (BOOL)allAttributesIsEqual: (NSArray *)otherCards
{
    //self.shape is equal to othercards.shape
}

你不能只是通过self.shape,因为这会给你value的财产。然而,多亏了 Cocoa/ObjC 的一些炸药,你可以传入name属性(或方法)并稍后获取结果。

聪明的(我敢说,甚至可能是“Pythonic”)方式:

// The name of the property we're interested in.
NSString * key = @"color";
// Get the values of that property for all the Cards in the array, then
// collapse duplicates, because they'll give the same results when comparing
// with the single card.
NSSet * vals = [NSSet setWithArray:[arrayOfCards valueForKey:key]];
// Now, if the set has only one member, and this member is the same
// as the appropriate value of the card we already have, all objects
// in the array have the same value for the property we're looking at.
BOOL colorIsEqual = ([vals count] == 1 && [vals containsObject:[myCard valueForKey:key]]);

那么你的方法可以如下所示:

- (BOOL)allOtherCards: (NSArray *)otherCards haveEqualAttribute: (NSString *)key;

Dan F 的实施建议- (BOOL)<#property#>Equal: (NSArray *)otherCards;然而,对于您感兴趣的每处房产来说,这并不是一个坏主意。当然,每一个都可以调用基本的“聪明”版本。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将实例的一个属性与一组其他实例进行比较 的相关文章

随机推荐

  • 如果派生类继承基类的私有成员,那么为什么不继承构造函数呢?

    我想澄清我对 C 中这个基本 OOPS 概念的理解 在大多数互联网网站上 我读到派生类inherits基类的私有成员 但它无法访问那些成员 派生类可以访问 public protected internal 和 基类的受保护内部成员 即使派
  • 使用 AlertDialog.Builder 时防止显示 StatusBar

    In the XML of my MainActivity 我已经对其进行了编程 以便it uses一个主题与NoActionBar因此没有显示操作栏 然而 每当我想显示一个对话框时 我都会调用我的一个DialogFragments使用一个
  • 如何比较 SKSpriteNode 纹理

    我正在使用 Sprite Kit 制作游戏 当发生碰撞时 我想检索与我的射弹碰撞的 SKSpriteNode 的图像 以根据怪物的图像分配不同的点值 我认为比较 SKSpriteNode 的纹理属性是可行的 我尝试过以下代码 但我的 if
  • Laravel 5 - 从用户的所有设备中注销用户

    一个用户已登录 并且他也已经在 3 台不同的计算机上登录 现在用户更改了密码 我想做点什么让他从所有设备上注销 默认情况下 如果我们在一台设备上更改密码 其他设备上不会发生任何情况 首先想到的是在中间件 每个请求 中检查密码 这不好并且会显
  • Android 日历特定事件删除

    我创建了一个应用程序 可以轻松地将我想要的值放入设备的日历中 但是当我想以编程方式从日历中删除它时 我找不到方法 我在网上搜索过 主要是其他 stackoverflow 问题 以找到答案 此处链接 删除日历条目 日历中的事件未删除 删除特定
  • 透明前景

    我想添加一个半透明的均匀层作为前景div元素 最好的方法是什么 你可以使用这个CSS div parent position relative this div is a descendent of the div above div ch
  • Android:带背景的透明彩色ListView

    I have a doubt I have a listview and below it there is a background with a image I would like to have the lists with a t
  • 执行长进程时,Windows 窗体中的动画 GIF

    我用 C 开发了一个简单的 Windows 应用程序 MDI 它将数据从 SQL 导出到 Excel 我正在使用 ClosedXML 成功实现这一目标 当该过程执行时 我想显示一个包含动画 GIF 图像的图片框 我是初学者 不知道如何实现这
  • 如何在Android中的mapView上使用kml文件

    我想知道如何以编程方式将已创建的 kml 文件加载到地图视图中 kml 文件存储在 SD 卡中 我已经设置了一个mapActivity 我是否只是 SAX 解析 kml 文件并使用绘制方法来创建边界 这是存储在手机上的 kml 文件的片段
  • 使用 pd.json_normalize 展平字典

    我目前正在努力压平这个字典文件 并且已经遇到了一些障碍 我正在尝试使用json normalize来扁平化这些数据 如果我用单个实例进行测试 它可以工作 但如果我想展平所有数据 它将返回一个错误 说明key error 0 我不知道如何解决
  • 如何在不使用 tf.assign 的情况下为 TensorFlow 中的 tf.Variable 赋值

    我有一个包含 4x4 单位矩阵的变量 我希望为这个矩阵分配一些值 这些值是由模型学习的 当我使用tf assign 我收到一条错误消息 指出跨步切片没有渐变 我的问题是如何在不使用的情况下做到这一点tf assign 这是所需行为的示例代码
  • MyBatis - 如何创建动态 WHERE 子句

    服务获取一个未知对象 其中包含三个值的列表 列 运算符 值 例如 电子邮件 就像 测试 基于结果列表来构建我拥有的 WHERE 子句 但我也可以构建这样的条件 如下所示 例如 WHERE 电子邮件如 测试 AND user id 5 或 t
  • XSD schemaLocation、targetNamespace、默认 XML 命名空间匹配

    当我根据 XSD 验证 XML 时 出现此错误 模式和实例都是有效的 我能够在 XML 解析器中验证它们 但在 Java 中遇到此错误 cvc elt 1 找不到元素 fieldsMapper 的声明 下面是我的架构
  • JSTL fmt 库抛出 500 错误,需要启用会话吗?

    我正在 Google App Engine 上开发一个简单的 servlet JSP 数据驱动的网站 我开始在一些数据输入表单上使用 JSTL fmt 库 并在使用标签时出现以下与会话相关的错误
  • 共享可分配数组

    我有一些可分配的数组 需要在一些子例程之间共享 我通常只会将它们作为参数传递 或者可能将所有内容写入模块中 但恐怕在我的情况下这是不可能的 我只编写一些自己的子例程并使用 FEM 求解器提供和描述的子例程 所以我无法更改此子例程的参数或将它
  • 如何测试 SimpleJdbcCall

    我需要为此代码创建测试 Autowired JdbcTemplate jdbcTemplate public List
  • 通过 Javascript 调用时,WCF Web 服务返回“错误请求”错误

    我正在尝试通过 javascript 向 WCF Web 服务方法发出 ajax GET 请求 该请求每次都会返回 400 错误请求 错误 但是 如果我通过 WCF 测试客户端调用相同的 Web 服务方法 它会返回正确的结果 此外 通过 j
  • 定量和定性解释变量之间相互作用的多元 Logistic 回归

    作为后续这个问题 我拟合了定量和定性解释变量之间相互作用的多重逻辑回归 MWE 如下 Type lt rep x LETTERS 1 3 each 5 Conc lt rep x seq from 0 to 40 by 10 times 3
  • 隐藏 Access 2016 功能区

    我试图在运行时禁用 Access 的所有默认工具栏和功能区 到目前为止 我遇到的剩余问题是功能区 我按照这个教程https msdn microsoft com en us library office ff837012 aspx 但当 A
  • 将实例的一个属性与一组其他实例进行比较

    我正在尝试编写一个实例方法Card将单张卡与数组进行比较的类 该类具有一些属性 例如 shape and color The otherCards数组中充满了此类的其他实例 这些实例也有它们的shapes and colors 现在 我想编