2015-09-19 2 views
1

Я разрабатываю приложение iOS в Swift. Когда я обновил Xcode до 7.0, я получаю ошибку в swiftyJSON.ошибка после обновления Xcode до 7.0

static func fromObject(object: AnyObject) -> JSONValue? { 
    switch object { 
    case let value as NSString: 
     return JSONValue.JSONString(value as String) 
    case let value as NSNumber: 
     return JSONValue.JSONNumber(value) 
    case let value as NSNull: 
     return JSONValue.JSONNull 
    case let value as NSDictionary: 
     var jsonObject: [String:JSONValue] = [:] 
     for (k:AnyObject, v:AnyObject) in value {// **THIS LINE- error: "Definition conflicts with previous value"** 
      if let k = k as? NSString { 
       if let v = JSONValue.fromObject(v) { 
        jsonObject[k] = v 
       } else { 
        return nil 
       } 
      } 
     } 

В чем проблема? Вы можете помочь, пожалуйста?

ответ

4
for (k:AnyObject, v:AnyObject) in value { .. } 

должен быть написано на Свифте 2, как

for (k, v) : (AnyObject, AnyObject) in value { .. } 

от выпуска нот Xcode 7:

Тип аннотации больше не разрешены в шаблонах и считаются частью дальнего декларация. Это означает, что код ранее написано как:

var (a : Int, b : Float) = foo() 

должен быть написано как:

var (a,b) : (Int, Float) = foo() 

если явный типа аннотации необходимы. Предыдущий синтаксис был неоднозначным с ярлыками элементов кортежа.

Но в вашем случае явная аннотацию на самом деле вообще не нужен:

for (k, v) in value { .. } 

потому NSDictionary.Generator уже определен как генератор возвращающегося (key: AnyObject, value: AnyObject) элементов.

+0

Большое спасибо!) – Spartak

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