I read the NSCopying , but I'm still very unsure how to implement what is required.
My Vendor Class:
@interface Vendor : NSObject { NSString *vendorID; NSMutableArray *availableCars; BOOL atAirport; } @property (nonatomic, copy) NSString *vendorID; @property (nonatomic, retain) NSMutableArray *availableCars; @property (nonatomic, assign) BOOL atAirport; - (id)initFromVehVendorAvailsDictionary:(NSDictionary *)vehVendorAvails; @end
The Vendor class has an array of objects called Car .
My Car Object:
@interface Car : NSObject { BOOL isAvailable; NSString *transmissionType; NSMutableArray *vehicleCharges; NSMutableArray *fees; } @property (nonatomic, assign) BOOL isAvailable; @property (nonatomic, copy) NSString *transmissionType; @property (nonatomic, retain) NSMutableArray *vehicleCharges; @property (nonatomic, retain) NSMutableArray *fees; - (id) initFromVehicleDictionary:(NSDictionary *)vehicleDictionary; @end
So, Vendor contains an array of Car objects. Car contains 2 arrays of other custom objects.
Both Vendor and Car are init from the dictionary. I will add one of these methods, they may or may not be relevant.
-(id)initFromVehVendorAvailsDictionary:(NSDictionary *)vehVendorAvails { self.vendorCode = [[vehVendorAvails objectForKey:@"Vendor"] objectForKey:@"@Code"]; self.vendorName = [[vehVendorAvails objectForKey:@"Vendor"] objectForKey:@"@CompanyShortName"]; self.vendorDivision = [[vehVendorAvails objectForKey:@"Vendor"] objectForKey:@"@Division"]; self.locationCode = [[[vehVendorAvails objectForKey:@"Info"] objectForKey:@"LocationDetails"] objectForKey:@"@Code"]; self.atAirport = [[[[vehVendorAvails objectForKey:@"Info"] objectForKey:@"LocationDetails"] objectForKey:@"@AtAirport"] boolValue]; self.venLocationName = [[[vehVendorAvails objectForKey:@"Info"] objectForKey:@"LocationDetails"] objectForKey:@"@Name"]; self.venAddress = [[[[vehVendorAvails objectForKey:@"Info"] objectForKey:@"LocationDetails"] objectForKey:@"Address"] objectForKey:@"AddressLine"]; self.venCountryCode = [[[[[vehVendorAvails objectForKey:@"Info"] objectForKey:@"LocationDetails"] objectForKey:@"Address"] objectForKey:@"CountryName"] objectForKey:@"@Code"]; self.venPhone = [[[[vehVendorAvails objectForKey:@"Info"] objectForKey:@"LocationDetails"] objectForKey:@"Telephone"] objectForKey:@"@PhoneNumber"]; availableCars = [[NSMutableArray alloc] init]; NSMutableArray *cars = (NSMutableArray *)[vehVendorAvails objectForKey:@"VehAvails"]; for (int i = 0; i < [cars count]; i++) { Car *car = [[Car alloc] initFromVehicleDictionary:[cars objectAtIndex:i]]; [availableCars addObject:car]; [car release]; } self.venLogo = [[[vehVendorAvails objectForKey:@"Info"] objectForKey:@"TPA_Extensions"] objectForKey:@"VendorPictureURL"]; return self; }
So, we summarize the terrible problem.
I need to copy an array of Vendor objects. I believe that I need to implement the NSCopying protocol on Vendor , which may mean that I need to implement it on Car as well, since Vendor contains an array of Car s. This means that I also need to implement it on classes that are stored in 2 arrays belonging to the Car object.
I would really appreciate it if I could get some recommendations on implementing the NSCopying protocol on Vendor , I canβt find any tutorials in this place.
ios objective-c iphone nscopying
user440096 Nov 03 '10 at 16:28 2010-11-03 16:28
source share