【问题标题】:Expected method to read dictionary element not found on object of type 'id<NSCopying>'在“id<NSCopying>”类型的对象上找不到读取字典元素的预期方法
【发布时间】:2018-05-04 00:10:34
【问题描述】:

我在我的应用程序中使用 Cocos2d-ObjC,最近将 Xcode 升级到 v9.3。现在我在“CCRendererBasicTypes.m”中有一个错误,上面写着

"Expected method to read dictionary element not found on object of type 'id&lt;NSCopying&gt;'"

其他一切正常。这是 CCRendererBasicTypes 的一部分

-(id)objectForKey:(id<NSCopying>)options
{
    CCBlendMode *blendMode = [self rawObjectForKey:options];
    if(blendMode) return blendMode;

    // Normalize the blending mode to use for the key.
    id src = (options[CCBlendFuncSrcColor] ?: @(GL_ONE));
    id dst = (options[CCBlendFuncDstColor] ?: @(GL_ZERO));
    id equation = (options[CCBlendEquationColor] ?: @(GL_FUNC_ADD));

    NSDictionary *normalized = @{
        CCBlendFuncSrcColor: src,
        CCBlendFuncDstColor: dst,
        CCBlendEquationColor: equation,

        // Assume they meant non-separate blending if they didn't fill in the keys.
        CCBlendFuncSrcAlpha: (options[CCBlendFuncSrcAlpha] ?: src),
        CCBlendFuncDstAlpha: (options[CCBlendFuncDstAlpha] ?: dst),
        CCBlendEquationAlpha: (options[CCBlendEquationAlpha] ?: equation),
    };

    // Create the key using the normalized blending mode.
    blendMode = [super objectForKey:normalized];

    // Make an alias for the unnormalized version
    [self makeAlias:options forKey:normalized];

    return blendMode;
}

错误出现在每一行

options[...]

【问题讨论】:

  • 通过从方法中删除 位修复了问题。
  • 我遇到了同样的问题,而您只是为我节省了一些时间。谢谢!

标签: objective-c cocos2d-iphone


【解决方案1】:

将第一行改为

-(id)objectForKey:(NSDictionary*)options

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-12
    • 1970-01-01
    • 1970-01-01
    • 2021-04-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多