Невозможно вызвать инициализатор для типа "NSMutableDictionary" со списком аргументов типа

Невозможно вызвать инициализатор для типа "NSMutableDictionary" со списком аргументов типа "(objectsAndKeys: String, String, String, String, String, String, NSNumber, String, String, String)"

У кого-нибудь есть мысли о том, почему я получаю эту ошибку?

data = NSMutableDictionary(objectsAndKeys:
            VPDateFormatter.dateFormatterPost.stringFromDate(NSDate().myGetDateWithDayDifference(dateOffset)), "activityDate",
            tracker.objectForKey(VPTracker_Description) as! String, "activityDescription",
            trackerType, "activityType",
            currentMemberID, "memberid",
            VPDateFormatter.dateFormatterOnlyDate.stringFromDate(date), kVPTrackerStatistic_MemberDate
        )

2 ответа

Решение

Я уверен, что Swift определяет этот конкретный метод как

NSMutableDictionary(objects: <#T##[AnyObject]#>, forKeys: <#T##[NSCopying]#>)

Таким образом, вы должны настроить соответственно. Я знаю, что это делает в 2.0

На самом деле, я бы предложил использовать быстрые типы данных. Я знаю, что привыкание к цели c может быть затруднительным, но оно того стоит, я бы выбрал здесь словарь.

С быстрым вы можете использовать var Dictionary<String, AnyObject> вместо NSMutableDictionary,

var data = [
        "activityDate" : VPDateFormatter.dateFormatterPost.stringFromDate(NSDate().myGetDateWithDayDifference(dateOffset)),
        "activityDescription" : tracker.objectForKey(VPTracker_Description) as! String,
        "activityType" : trackerType,
        "memberid" : currentMemberID,
        kVPTrackerStatistic_MemberDate : VPDateFormatter.dateFormatterOnlyDate.stringFromDate(date) 
]

Использование этой нотации g может позволить быстрому компилятору точно определить любую ошибку, которую вы имеете, вместо длинной ошибки в сигнатурах методов. Кроме того, это даст вам проверку типов!

Другие вопросы по тегам