在关注在线方法的过程中,我遇到了以下代码:
NSDictionary *address = @{
(NSString *)kABPersonAddressStreetKey: _address.text,
(NSString *)kABPersonAddressCityKey: _city.text,
(NSString *)kABPersonAddressStateKey: _state.text,
(NSString *)kABPersonAddressZIPKey: _zip.text
};
不能在XCode 4.5.1中编译。我收到两个错误:
我在这里缺少什么?另外,在哪里可以找到有关NSDictionary对象的此快捷方式声明的文档?像这样的Google语法非常难。
答案 0 :(得分:5)
它是现代目标c的一部分,它被称为客观的c。litterals。 这段代码应该运行良好,也许你正在使用和旧的编译器,确保你使用的是最后一个编译器(目前是LLVM 4.1)
答案 1 :(得分:5)
这是Obj-C Literals的一部分,自LLVM 4.0开始引入。确保您使用的是正确版本的iOS。翻译成原始的pre-llvm 4.0语言,NSDictionary赋值如下:
NSDictionary *address = [[NSDictionary alloc] initWithObjectsAndKeys:
(NSString *)kABPersonAddressStreetKey, _address.text,
(NSString *)kABPersonAddressCityKey, _city.text,
(NSString *)kABPersonAddressStateKey, _state.text,
(NSString *)kABPersonAddressZIPKey, _zip.text,
nil];
答案 2 :(得分:3)
@声明是Objective-C文字。链接到信息: