Ich habe ein ungewöhnliches Problem in Swift 2.3 zu Swift 3.0. Sobald ich den Code 2,3-3,0 konvertieren, ich dieses Problem bin immer: "Mehrdeutige Bezug auf Mitglieder Subscript ',Swift 3.0: Mehrdeutiger Verweis auf Mitglied 'Tiefgestellt' Problem
Code:
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
}
}
}
Erste Fehler auf let Paket = data [AEnginePacketDataKey] als Unklarer Verweis auf Mitglied 'Tiefgestellt', ich verstehe nicht warum? Andere:
// 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
Bitte helfen Sie mir.
Wenn Sie davon ausgehen, dass NSString ein Zeiger ist, der auf dem Stern basiert ... ist es nicht. So werden Objective-C-Objekte deklariert. Ein NSString-Zeiger wäre "NSString ** foo" –
@LeeAnnRucker Nach doppelter Überprüfung bin ich ziemlich sicher, dass meine Antwort korrekt war. Objektvariablen in Objective C sind Zeiger auf ihre Objekte. 'NSString * foo' ist ein Zeiger auf einen NSString. 'NSString ** foo' wäre ein Zeiger auf einen Zeiger. – Robert