首页 > 解决方案 > 在Objective C中通过键从SwiftDeferredNSDictionary中提取一个值,其中键是Swift枚举

问题描述

给定

enum MyKey: String {
    case aKey
}

let obj : [MyKey: Any] = [MyKey.aKey: "value"];
  

在我的 obj-c 方法中,我这样做:

[obj allKeys];

接着

for (id paramName in allKeys) {
    id paramValue = [obj valueForKey:paramName]; // Crashes here
    ...
}

它崩溃了一个异常'NSInvalidArgumentException', reason: '-[__SwiftValue length]: unrecognized selector sent to instance

在这种情况下,如何正确提取值?

标签: iosobjective-cswift

解决方案


事实证明,块枚举就像 Objective c 中的 Swift 字典的魅力一样。

[obj enumerateKeysAndObjectsUsingBlock:^(id paramName, id paramValue, BOOL* stop) { }];

推荐阅读