迁移到Swift 2“使用未解析的标识符'***'”

时间:2015-12-01 10:35:38

标签: swift swift2

我正在将我的项目从Swift 1.2升级到Swift 2。

我利用这个机会来升级我使用的很多lib,尤其是Alamofire。

但是现在我的许多要求都出现了这个错误:

  

使用未解析的标识符'notifTypeJSON'

以下是其中一个函数的代码:

func getNotifications(failure failure: (NSError) -> (), success: ([Notification]) -> ()) {
    Alamofire.request(Router.Notifications)
        .validate()
        .responseJSON { response in
            if let error = response.result.error {
                failure(error)
            } else {
                var json = JSON(response.data!)
                let status = json["error"].intValue
                if status != 0 {
                    failure(self.createError(status))
                } else {
                    var notifications = [Notification]()
                    let notificationsList = json["notification"]
                    for (index: String, notifTypeJSON: JSON) in notificationsList {
                        if let notifJSON = notifTypeJSON[NotificationTypes.Generic.rawValue].dictionaryObject {
                            notifications.append(GenericNotification(json: notifJSON))
                        }
                        else if let notifJSON = notifTypeJSON[NotificationTypes.Follow.rawValue].dictionaryObject {
                            notifications.append(FollowNotification(json: notifJSON))
                        }
                        else if let notifJSON = notifTypeJSON[NotificationTypes.Comment.rawValue].dictionaryObject {
                            notifications.append(CommentNotification(json: notifJSON))
                        }
                        else if let notifJSON = notifTypeJSON[NotificationTypes.Like.rawValue].dictionaryObject {
                            notifications.append(LikeNotification(json: notifJSON))
                        }
                    }
                    DDLogInfo("SeetyAPI getNotifications() success")
                    success(notifications)
                }
            }
    }
}

1 个答案:

答案 0 :(得分:1)

在Swift 2中,我们使用元组循环字典的方式已经改变:类型必须在一个单独的元组中。

之前的例子:

for (key:String, value:Int) in xxx {

示例之后:

for (key, value):(String, Int) in xxx {

所以对你来说,你需要替换它:

for (index: String, notifTypeJSON: JSON) in notificationsList {

有了这个:

for (index, notifTypeJSON):(String, JSON) in notificationsList {