2016-04-19 78 views
3
self.mapper.identityIdsForQuickbloxUserIds(userIDs.map{($0 as! NSNumber).unsignedLongValue}, completion: { identityIdsMapping, error in 

無法轉換調用結果類型'_?'預期型 '[UINT]'無法轉換調用結果類型'_?'到預期類型'[UInt]'

userIDsNSSet

,這裏是一個函數:

func identityIdsForQuickbloxUserIds(userIds:[UInt], completion:(identityIdsMapping:[UInt: String]?, error:NSError?) -> Void) 

如何將它轉換的正確方法?

這是回到我那一套外部函數:正如你看到的,我們得到

- (void)allDialogsWithPageLimit:(NSUInteger)limit 
       extendedRequest:(QB_NULLABLE NSDictionary *)extendedRequest 
       iterationBlock:(void(^QB_NULLABLE_S)(QBResponse *QB_NONNULL_S response, NSArray QB_GENERIC(QBChatDialog *) *QB_NULLABLE_S dialogObjects, NSSet QB_GENERIC(NSNumber *) * QB_NULLABLE_S dialogsUsersIDs, BOOL * QB_NONNULL_S stop))iterationBlock 
        completion:(void(^QB_NULLABLE_S)(QBResponse * QB_NONNULL_S response))completion; 

說的NSSet從這裏:

NSSet QB_GENERIC(NSNumber *) * QB_NULLABLE_S dialogsUsersIDs 

該方法是從QuickBlox SDK

+0

我有試過這個「let userIds = NSSet(objects:1,2,3).map {($ 0 as! NSNumber).unsignedLongValue}「並且工作得很好。你確定你沒有試圖映射一個對象嗎?如果是這樣的話$ 0將不起作用。 – Brduca

+0

問題在你發佈的內容中不清楚,需要更多細節。也許隔離地圖方法來確認問題發生在那裏。並且仔細檢查你的NSSet中的數據是否可以被類型轉換爲NSNumber,我懷疑問題出在那裏。 –

回答

1

例1:

下面是一個簡單的例子:

identityIdsForQuickbloxUserIds([1,2,3]) { dictionary, error in 


    } 

例2:

let x = NSSet(array: [1, 2, 3]).map { $0 as! UInt } 

    identityIdsForQuickbloxUserIds(x) { dictionary, error in 


    } 
+0

userIDs是一組) –

+0

查看更新後的答案(示例2) – user1046037

+0

I我更新了我的問題,謝謝! –

1

userIDs是可選Set<NSNumber>?Set<NSNumber>所以你需要解開,如果先用這樣的

var ids = userIDs?.map { $0.unsignedLongValue } ?? [UInt]() 

... 

identityIdsForQuickbloxUserIds(ids, ...) 
+0

有意義@Matrosov Alexander可以粘貼'userIDs'的聲明 – user1046037

相關問題