2
私はSwift 2.3からSwift 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] LETパケット=データ上のエラーを取得しますメンバー '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