userRecord是什么意思[@" firstName"] = self.me.firstName;?

时间:2014-10-21 07:54:24

标签: objective-c

我对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);
    }];
};

3 个答案:

答案 0 :(得分:0)

在上面的代码中,您将值放在字典中 使用键FirstName

为字典赋值

答案 1 :(得分:0)

userRecord属于NSMutableDictionary类型,这意味着它是键/值存储

您可以通过提供相应的来访问

在您的情况下,userRecord包含 firstNamelastName

在Objective-C中,您有两种可能性来访问,两者在功能上都是等价的:

  1. 使用objectForKey: / setObject:forKey:
  2. 使用句法糖
  3. 在您的情况下,您使用带有语法糖的第二个选项在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 mefirstName具有默认的getter名称。)

NSMutableDictionary中,方法setObject:forKeyedSubscript:相当于setObject:forKey: