2
스위프트 2.3에서 스위프트 3.0으로 비정상적인 문제가 발생했습니다. 나는 2.3에서 3.0로 코드를 변환하면, 내가이 문제를 점점 오전 : 첨자 ''멤버에 대한 참조가 모호 ',Swift 3.0 : 회원 'Subscript'문제에 대한 모호한 참조
코드은 다음과 같습니다
dynamic func onDataNotification(notification: NSNotification) {
var data = notification.userInfo as! Dictionary<NSString, ARoutedMessage>
if let packet = data[AEnginePacketDataKey] as? AEngineMessage,
currentDevice = self.currentDevice() {
if packet.messageId == MessageId.message && currentDevice.isDevice() {
// Some code
}
}
}
데이터 [AEnginePacketDataKey]로 =하자 패킷에 오류가 멤버 'Subscript'에 대한 모호한 참조, 왜 이해가 안되나요? 기타 :
// String
extern NSString *AEnginePacketDataKey;
//ARoutedMessage Class
@interface ARoutedMessage : NSObject
@property NSMutableArray *payloadParameters;
@end
//AEngineMessage Class
@interface AEngineMessage : ARoutedMessage
@property (readonly)MessageId messageId;
- (id) initWithMessageId:(MessageId) mId;
@end
제발 도와주세요.
NSString이 별표 (*)를 기반으로 한 포인터라고 가정한다면 ... 그렇지 않습니다. 이것이 Objective C 객체가 선언되는 방법입니다. NSString 포인터는 "NSString ** foo"가 될 것입니다. –
@LeeAnnRucker 두 번 확인한 후, 저는 제 대답이 정확하다고 확신합니다. Objective C의 객체 변수는 객체에 대한 포인터입니다. 'NSString * foo'는 NSString에 대한 포인터입니다. 'NSString ** foo'는 포인터를 가리키는 포인터입니다. – Robert