提问人:rammusThamennace 提问时间:4/27/2022 最后编辑:WillekerammusThamennace 更新时间:4/28/2022 访问量:33
向 NSObject 键添加值 - 表达式不可赋值
Adding value to NSObject key- Expression is not assignable
问:
我正在尝试将从 API 调用中返回的值添加到 Objective-C 中的对象。我在 Xcode 中收到一个错误,说“表达式不可分配”,不明白为什么。在我的中,我有一个带有值的对象,我正在尝试为 设置值。我在这种方法中做错了什么?carObj
warrantyPlan
nil
warrantyPlan
NSArray *carUUIDs = [carData valueForKeyPath:@"uuid"];
NSString *ownerUUID = ownerRecord[@"uuid"];
if (ownerID) {
NSManagedObjectContext *context = [DataCenter viewContext];
NSObject *carObj = [context objectsForEntityName:[CarObject entityName] matchingUUIDs:carUUIDs];
for (id carID in carUUIDs){
[WarrantyPlansService getWarrantyPlansForCarWithCarID:carID ownerID:ownerUUID completion:^(NSArray* response, NSError* error){
//attach the response to the carData
NSLog(@"%@", [carObj valueForKeyPath:@"warrantyPlans"]);
[carObj valueForKeyPath:@"warrantyPlans"] = response;
}];
}
答:
0赞
Shadowrun
4/27/2022
#1
[carObj valueForKeyPath:@"warrantyPlans"]
是一个具有值的表达式,就像字面上是一个具有值的表达式一样。它不是这样的表达式,而是一个值为 42 的变量,可以通过在等号的左侧使用它来更改。42
foo
要更改它,您需要:
[carObj setValue:response forKeyPath:@"warrantyPlans"]
在 KeyValueCoding 指南中,这两个称为泛型 getter 和泛型 setter:https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/KeyValueCoding/index.htmlvalueForKey:
setValue:forKey:
评论