【问题标题】:Property not found on object type of nested type object in Objective - C在Objective-C中的嵌套类型对象的对象类型上找不到属性
【发布时间】:2021-02-12 03:55:31
【问题描述】:
@interface MyModel :NSObject

@property (strong, nonatomic) NSString *name;
@property (strong, nonatomic) NSMutableArray <MyModel> *items;
@property (strong, nonatomic) NSString *id;

@end

@interface SomeVC ()

@property (strong, nonatomic) NSObject *object;
@property (strong, nonatomic) NSMutableArray <MyModel> *items;


 _items = (NSMutableArray <MyModel> *)self.object;
 _items.items // !! COMPILE ERROR

我在(NSMutableArray &lt;MyModel&gt; *)的对象类型上找不到错误属性

我写了一个很长的课程,所以我写了一些代码。

我正在尝试访问其中包含许多 MyModel 对象的 items 对象。在这个 MyModel 对象内部还有一个嵌套的秒项对象 MyModel 类型。

我习惯用 Swift 编写。使用类型转换一切都很容易。在 Objective-C 中进行类型转换的好方法是什么。给 items 和 items.items 的引用对象如何有意义?

【问题讨论】:

  • Noooo - 在 Objective-C 中,您不必对所有内容都进行类型转换,这真是一种解脱,尽管这当然是一个品味问题。无论如何,您不能像那样使用 MyModel,您必须使用指向它的指针。您还需要导入正确的标题来解决您的问题。我将发布一些代码来说明...
  • 请先生期待您的回答:) 我认为项目中已经实现了头文件。
  • 我发布了如何执行 NSMutableArray 但不清楚您要对项目做什么?你设置 self.items = self.object 真的很可疑?到底是怎么回事?编译错误是因为可变数组上没有items
  • 我正在尝试您对项目的建议,给我一些时间:)
  • 您可以在另一个数组中包含一个数组,但我认为您没有正确使用该对象,或者我可能不理解。由于这不是一个交互式站点,因此很难提供帮助。我想尝试更多,也许使用[self.items addObject:xxx]; 将对象添加到数组中,一旦你取得一些进展,再次询问你是否卡住了。

标签: arrays objective-c generics type-conversion


【解决方案1】:

从你的错误我认为你错过了一个

#import "MyModel.h"

SomeVc.m 类中。

如果你赶时间,Objective-C 可以让你做的很简单(而且更普遍)

@property (strong, nonatomic) NSMutableArray * items;

可能会产生警告。这只是根据您的类型转换评论。

要具体回答您的问题,您确实需要在此处指向 MyModel 的指针,因此将其更改为

@property (strong, nonatomic) NSMutableArray < MyModel * > * items;

【讨论】:

  • 感谢我关注了这些,但没有任何改变,项目数组仍然充当标准数组并且看不到它的属性
  • @ayfer 这是使用协议并将 objC “id”存储在 NSMutableArray&lt;id&lt;YourProtocol&gt;&gt;*items; 中的经典时刻。这就是为什么像“id”这样的属性命名在现实中会造成麻烦。另一个麻烦的事情可能是如果你有一个方法返回一个普通的 NSMutableArray 像-(NSMutableArray*)items {...} 这样。而不是-(NSMutableArray&lt;MyModel*&gt;*)items {...}
猜你喜欢
  • 2016-05-11
  • 2014-04-27
  • 2012-03-04
  • 1970-01-01
  • 2018-01-21
  • 1970-01-01
  • 2023-03-22
  • 2019-06-25
  • 2021-06-30
相关资源
最近更新 更多