2016-11-04 3 views
2

У меня есть необычная проблема в swift 2.3 до Swift 3.0. После того, как преобразовать код от 2.3 до 3.0, я получаю этот вопрос: "неоднозначную ссылку на член„Индекс“,Swift 3.0: Неоднозначная ссылка на вопрос «Подзаголовок участника»

код является:

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 

Пожалуйста, помогите мне.

ответ

2

Ошибка «неоднозначной ссылки» сообщает вам, что переменная, которую вы пытаетесь использовать в качестве индекса, является неправильным типом.

В этом случае data - это словарь, который ожидает индекс NSString. Похоже, что AEnginePacketDataKey определяется как указатель на NSString в коде Objective C, но вы не показываете, где (если) ему присваивается что-либо. Убедитесь, что вы назначили фактический NSString, прежде чем пытаться использовать его в качестве индекса data.

+0

Если вы предполагаете, что NSString является указателем на основе звездочки ... это не так. Вот как объявляются объекты Objective C. Указателем NSString будет «NSString ** foo» –

+0

@LeeAnnRucker После двойной проверки, я уверен, что мой ответ верен. Переменные объекта в Objective C являются указателями на их объекты. 'NSString * foo' является указателем на NSString. 'NSString ** foo' будет указателем на указатель. – Robert

Смежные вопросы