ฉันได้อ่านNSCopying
เอกสารแล้ว แต่ยังไม่แน่ใจว่าจะนำสิ่งที่จำเป็นไปใช้ได้อย่างไร
ชั้นเรียนของฉันVendor
:
@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
ชั้นมีอาร์เรย์ของวัตถุที่เรียกว่าVendor
Car
Car
วัตถุของฉัน:
@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
ดังนั้นVendor
ถืออาร์เรย์ของCar
วัตถุ Car
มี 2 อาร์เรย์ของวัตถุที่กำหนดเองอื่น ๆ
ทั้งสองVendor
และCar
เริ่มต้นจากพจนานุกรม ฉันจะเพิ่มหนึ่งในวิธีต่อไปนี้อาจเกี่ยวข้องหรือไม่ก็ได้
-(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;
}
ดังนั้นเพื่อสรุปปัญหาที่น่ากลัว
ฉันต้องการคัดลอกอาร์เรย์ของVendor
วัตถุ ฉันเชื่อว่าฉันจำเป็นต้องใช้NSCopying
โปรโตคอลVendor
ซึ่งอาจหมายความว่าฉันต้องใช้มันด้วยCar
เนื่องจากVendor
มีอาร์เรย์ของCar
s นั่นหมายความว่าฉันต้องนำไปใช้กับคลาสที่จัดขึ้นใน 2 อาร์เรย์ที่เป็นของCar
ออบเจ็กต์
ฉันจะขอบคุณมากถ้าฉันได้รับคำแนะนำในการใช้งานNSCopying
โปรโตคอลVendor
ฉันไม่พบบทช่วยสอนใด ๆ เกี่ยวกับเรื่องนี้เลย