如何在键路径中更改 NSObject 的值?
How can I change a value of an NSObject at a keypath?
我有一个 NSObject,上面有我的个人资料信息。包含我最喜欢的颜色和数字的数组,以及包含我最好朋友的名字的字符串。
{
favoriteColors = (
Green,
Blue,
Orange
);
favoriteNumbers = (
3,
16,
20
);
bestFriend = Josh;
}
现在,我想更新我的个人资料信息并将我的 bestFriend 替换为 "Alex"。
我正在寻找可以执行此操作的函数:
[profileInformation replaceAtKeyPath:@"bestFriend" with: @"Alex"];
我尝试的很多事情都会出错,例如"Expression is not assignable",例如
[profileInformation valueForKeyPath:@"bestFriend"] = @"Alex";
你要找的是 KVC (NSKeyValueCoding)
[profileInformation setValue:@"Alex" forKey:@"bestFriend"]
另请注意,NSKeyValueCoding 是一种非正式协议,这意味着所有 NSObjects 都会自动遵守它。这就是为什么 Xcode 自动完成将允许您在任何 Objective-C 基础对象
上调用 -setValue:forKey:
我有一个 NSObject,上面有我的个人资料信息。包含我最喜欢的颜色和数字的数组,以及包含我最好朋友的名字的字符串。
{
favoriteColors = (
Green,
Blue,
Orange
);
favoriteNumbers = (
3,
16,
20
);
bestFriend = Josh;
}
现在,我想更新我的个人资料信息并将我的 bestFriend 替换为 "Alex"。
我正在寻找可以执行此操作的函数:
[profileInformation replaceAtKeyPath:@"bestFriend" with: @"Alex"];
我尝试的很多事情都会出错,例如"Expression is not assignable",例如
[profileInformation valueForKeyPath:@"bestFriend"] = @"Alex";
你要找的是 KVC (NSKeyValueCoding)
[profileInformation setValue:@"Alex" forKey:@"bestFriend"]
另请注意,NSKeyValueCoding 是一种非正式协议,这意味着所有 NSObjects 都会自动遵守它。这就是为什么 Xcode 自动完成将允许您在任何 Objective-C 基础对象
上调用-setValue:forKey: