2016-10-01 7 views
7

Мы обновляемся до SwiftyJSON Swift 3 с конфигурацией CocoaPods pod 'SwiftyJSON', '3.1.0'.SwiftyJSON & Swift 3: Невозможно преобразовать возвращаемое выражение типа 'Int32?' для возврата типа> 'Int?'

Мы получаем эту ошибку:

/Users/xxx/Documents/iOS/xxx/Pods/SwiftyJSON/Source/SwiftyJSON.swift:866:33: Cannot convert return expression of type 'Int32?' to return type 'Int?'

Ошибка находится на оператора возврата в SwiftyJSON.swift:

public var int: Int? { 
    get { 
     return self.number?.int32Value 
    } 
    set { 
     if let newValue = newValue { 
      self.object = NSNumber(value: newValue) 
     } else { 
      self.object = NSNull() 
     } 
    } 
} 

Кто знает, в чем проблема? Это проблема с нашей конфигурацией CocoaPods или с SwiftyJSON?

ответ

4

Реализован supported version of SwiftyJSON 3.0.0, а не 3.1.0. Использовал 3.0.0, и проблема исчезла.

pod 'SwiftyJSON', '3.0.0'

+1

я пытался, но не работал. – Mehul

+1

Вы запустили команду обновления pod и позволили ей закончить? И сделать полную чистую и построить? –

8

Я просто заменить одну строку кода с кодом ниже. Простой

public var int: Int? { 
     get { 
      return self.number?.intValue 
     } 
     set { 
      if let newValue = newValue { 
       self.object = NSNumber(value: newValue) 
      } else { 
       self.object = NSNull() 
      } 
     } 
    } 
+0

Это действительно, но наша цель - не изменять источник клиентской библиотеки. –

+0

Да. Я с тобой согласен. мы не должны изменять его. Но если мы хотим, чтобы временное решение удаляло erro, мы можем использовать вышеприведенный код. В будущем мы удалим его определенно. – Mehul

0

просто попробовать это,

Bad : return self.number?.int32Value

Good : return self.number?.intValue

Reason : Seems to be more generic in how it can return integers.

0

я вручную добавил as? Int, чтобы получить эту работу снова:

public var int: Int? { 
    get { 
     return self.number?.int32Value as? Int 
    } 
    set { 
     if let newValue = newValue { 
      self.object = NSNumber(value: newValue) 
     } else { 
      self.object = NSNull() 
     } 
    } 
}