我对Objective-C语法有一些问题,请参考以下源代码。
userRecord[@"firstName"] = self.me.firstName;
是什么意思?
是[userRecord setObject:self.me.firstName forKey:@"firstName"]
吗?
感谢您的帮助。
void(^fetchedMyRecord)(CKRecord *record, NSError *error) = ^(CKRecord *userRecord, NSError *error) {
LOG_ERROR(@"fetching my own record");
self.myRecord = userRecord;
userRecord[@"firstName"] = self.me.firstName;
userRecord[@"lastName"] = self.me.lastName;
[self.publicDB saveRecord:userRecord completionHandler:^(CKRecord *record, NSError *error){
LOG_ERROR(@"attaching my values");
NSLog(@"Saved record ID %@", record.recordID);
}];
};
答案 0 :(得分:0)
在上面的代码中,您将值放在字典中 使用键FirstName
为字典赋值答案 1 :(得分:0)
userRecord
属于NSMutableDictionary
类型,这意味着它是键/值存储!
您可以通过提供相应的键来访问值。
在您的情况下,userRecord
包含键 firstName
和lastName
的值。
在Objective-C中,您有两种可能性来访问值,两者在功能上都是等价的:
objectForKey:
/ setObject:forKey:
在您的情况下,您使用带有语法糖的第二个选项在userRecord
中设置值,或者您可以使用:
[userRecord setObject:self.me.lastName forKey:@"lastName"];
,这相当于你的行:
userRecord[@"lastName"] = self.me.lastName;
因此,要回答您的问题,是的,userRecord[@"firstName"] = self.me.firstName;
与[userRecord setObject:self.me.firstName forKey:@"firstName"];
相同。
请注意,这仅适用于NSMutableDictionary
类型的对象,而不适用于NSDictionary
类型的对象。
答案 2 :(得分:0)
userRecord是什么[@" firstName"] = self.me.firstName;意思?
是[userRecord setObject:self.me.firstName forKey:@" firstName"]?
完全。
长篇故事:您的代码行扩展为......
[userRecord setObject:[[self me] firstName] forKeyedSubscript:@"firstName"];
...其中self.me.firstName
对应[[self me] firstName]
(如果@properties me
和firstName
具有默认的getter名称。)
在NSMutableDictionary
中,方法setObject:forKeyedSubscript:
相当于setObject:forKey:
。