Ios 具有类似协议的NSSet(NSSet<;NSObject*>;*名称)
我已经使用数据模型编辑器生成了Ios 具有类似协议的NSSet(NSSet<;NSObject*>;*名称),ios,objective-c,core-data,nsset,Ios,Objective C,Core Data,Nsset,我已经使用数据模型编辑器生成了NSManagedObject子类(Photo和Photo),它们具有Photo->到多个->Photo的关系 摄影师(CoreDataProperties)类别附带一个属性: @interface Photographer (CoreDataProperties) ... @property (nullable, nonatomic, retain) NSSet<Photo *> *photos; @end 界面摄影师(CoreDataProp
NSManagedObject
子类(Photo
和Photo
),它们具有Photo
->到多个->Photo
的关系
摄影师
(CoreDataProperties)类别附带一个属性:
@interface Photographer (CoreDataProperties)
...
@property (nullable, nonatomic, retain) NSSet<Photo *> *photos;
@end
界面摄影师(CoreDataProperties)
...
@属性(可空、非原子、保留)NSSet*照片;
@结束
NSSet
是什么意思?您是否可以使用类似协议的表示法指定NSSet
中的对象类型?在文档或其他任何地方都找不到有关它的任何信息。这是最近为Swift/Objective-C互操作而添加的
请参阅:并查找“泛型”。在Xcode 7中,苹果在目标C中添加了“轻量级泛型” 如果类型不匹配,它们将生成编译器警告 NSArray、NSSet和NSDictionary类型的Objective-C声明 使用轻量级通用参数化由Swift导入 有关所保存内容类型的信息
是的,NSSet是泛型类型,因此需要提供元素类型,以便为编译器完全定义其类型;是其类型签名的一部分。对于编译器,数组=[String]。可以使用sytanx数组()和[String]()初始化字符串数组。查看这里关于泛型类型的讨论:(我知道这是Swift而不是objective C,但我相信概念是一样的。)谢谢!我不知道是Xcode 7专用的。因此,一般来说,这只是一个编译器警告,您仍然可以向它传递任何类型的对象,只是编译器会警告您使用属性声明的类型?可以,但我建议最好删除泛型代码,只使用NSSet*photos;,那么你就不需要忽略任何警告。