【问题标题】:Change a property within NSArray更改 NSArray 中的属性
【发布时间】:2013-12-09 15:37:14
【问题描述】:

所以我有一个问题如何执行以下操作: 我有一个带有对象的 NSArray。

    NSArray *array = [[NSArray alloc] initWithObjects:object1, object2, nil];

object1 和 object2 是 UIButton 的子类。这个子类有一个运行良好的 BOOL 属性(BOOL prop;)。

object1.prop = YES;
NSLog (@"What does the BOOL say? %@", object1.prop ? @"YES" : @"NO");

-> 控制台输出 YES。 所以这一切都很好,但是我怎样才能改变 NSArray 中 prop 的值呢?当然像 [[array objectAtIndex:0] anf]; = 是的;由于语法而无法工作,但我真的不知道语法如何做到这一点。 如果有人帮助我,我会很高兴! 提前致谢。

【问题讨论】:

  • [[array objectAtIndex:0] setProp:YES];

标签: ios objective-c properties uibutton nsarray


【解决方案1】:

有许多相关的方法可以避免编译器警告。最简单的“内联”方法是(假设您的 UIButton 子类称为 MyButton):

((MyButton *) array[0]).prop = YES.

或(使用旧语法):

((MyButton *) [array objectAtIndex: 0]).prop = YES.

或

MyButton *button = (MyButton *) array[0];
button.prop = YES.

【讨论】:

  • 第三种情况不需要演员表。
  • 谢谢, ((MyButton *) [array objectAtIndex:0]).prop = YES;是我搜索的内容。
【解决方案2】:
[(YourSubclass *)[array objectAtIndex:0] setProp:YES];

一般来说,强制转换是可选的,因为 NSArray 包含 id 类型的对象。但是为了代码清晰,强制转换可能会造成伤害,因此稍后您会看到您打算做什么。

【讨论】:

  • 不需要演员表。
猜你喜欢
  • 1970-01-01
  • 2015-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-06
  • 2021-11-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多