相关疑难解决方法(0)

objectForKey和valueForKey之间的区别?

objectForKey和之间有什么区别valueForKey?我在文档中查看了它们,它们对我来说似乎是一样的.

cocoa objective-c key-value-coding

343
推荐指数
4
解决办法
11万
查看次数

NSDictionary <FBGraphUser>*用户语法说明

在Facebook iOS SDK中,使用以下处理程序返回请求:

 ^(FBRequestConnection *connection, 
       NSDictionary<FBGraphUser> *user, 
       NSError *error) { }
Run Code Online (Sandbox Code Playgroud)

然后可以使用这些调用来访问用户变量......

   self.userNameLabel.text = user.name;
   self.userProfileImage.profileID = user.id;
Run Code Online (Sandbox Code Playgroud)

这种语法有点类似于id <protocolDelegate> object公共属性声明的语法语法,除了NSDictionary是明确的id对象,并且该字典符合协议?但点语法来自何处以及如何声明任意NSFoundation对象与协议相对应而没有对对象本身进行子类化并使其符合?

我做了一些关于点符号和NSDictionary的额外研究,看起来如果没有在NSDictionary中添加类别,就不可能在字典上使用点符号.但是,我没有在Apple文档中看到任何<>语法的引用,表明NSDictionary的这个特定实例符合该表示法.

关于这种包装的工作方式,Facebook文档有点稀疏:

FBGraphUser协议表示Facebook用户对象最常用的属性.它可用于访问已使用FBGraphObject外观包装的NSDictionary对象.

如果跟随这个引导到FBGraphObject文档,那么有一些方法返回符合这个"外观......"的字典,但没有关于如何包装字典的进一步解释.

所以我想我的问题有几点:

  1. 底层代码看起来会使这种语法有效吗?
  2. 它为什么存在?
  3. 为什么facebook会以这种方式实现它,而不是只创建一个可以将数据转换成对象的对象?

任何解释或见解将非常感谢!

objective-c ios facebook-sdk-3.0

3
推荐指数
1
解决办法
3285
查看次数