【发布时间】:2021-08-15 17:38:04
【问题描述】:
我有一组 someProtocol 对象,我想从这个对象的 NSString 嵌套属性中创建一个集合:
// Protocol SomeProtocol
@protocol SomeProtocol<NSObject>
@property(nonatomic, readonly) id<SomeSubProtocol> someSubProtocolObject;
@end
// Protocol SomeSubProtocol
@protocol SomeSubProtocol<NSObject>
@property(nonatomic, readonly) NSString *Id;
@end
我有一套 SomeProtocols:
NSSet<id<SomeProtocol>> *setOfSomeSubProtocols;
我想获取 Id 属性的 NSSet:
NSSet<NSString *> *idSet = ?; // Calculate from arrayOfSomethings.
我试过了:
idSet = [setOfSomeSubProtocols valueForKeyPath @"someSubProtrocolObject.id"];
但如果属性发生变化,我更喜欢会引发编译器错误的东西......
【问题讨论】:
-
stackoverflow.com/questions/6127638/nsarray-equivalent-of-map ? Objective-C 中
map()的实现之一可能会抛出编译器错误,如果不可能,因为属性已更改... -
另外,
setOfSomeSubProtocols上的手动循环也没有问题。
标签: ios objective-c nsset