向NSObject键添加值-表达式不可赋值



我正在尝试将从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;
}];
}

[carObj valueForKeyPath:@"warrantyPlans"]是一个具有值的表达式,就像字面上42是一个有值的表达式一样。它不是像foo那样的表达式,它是一个值为42的变量,可以通过在等号的左侧使用它来更改

要更改它,您需要:

[carObj setValue:response forKeyPath:@"warrantyPlans"]

在KeyValueCoding指南中,这两个被称为通用gettervalueForKey:和通用settersetValue:forKey::https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/KeyValueCoding/index.html

最新更新