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