2
我在swift 3.0的swift 2.3中遇到了一個不尋常的問題。有一次,我的代碼轉換,從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]作爲模糊引用成員'下標',我不明白爲什麼?其他:
// 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