我有一个plist文件,其中包含一些“对象”。我可以成功提取字典,但是当我尝试NSLog objectForKey时,我得到了这种日志:

<CFKeyedArchiverUID 0x608000228c20 [0x7fff75bddf00]>{value = 815}


如何提取值815?

也许可以帮助您知道815是对字典中某个项目位置的引用。

谢谢

最佳答案

根据此opensource.apple.com source code,CFKeyedArchiverUID是一个结构:

struct __CFKeyedArchiverUID {
  CFRuntimeBase _base;
  uint32_t _value;
};


CFRuntimeBase是16位。 (opensource.apple.com source

因此,您可以通过跳过前16位并在该地址获取uint32_t值来获取CFKeyedArchiverUID对象的值:

+ (uint32_t)valueForKeyedArchiverUID: (id)keyedArchiverUID {
    void *uid = (__bridge void*)keyedArchiverUID;
    uint32_t *valuePtr = uid+16;
    return *valuePtr;
}

关于objective-c - 提取CFKeyedArchiverUID值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25397048/

10-15 11:58