Я создаю приложение, которое использует NSCoding для сохранения NSObject в documentPath. У меня нет проблем с этим, мне просто интересно кое-что.
У меня есть MACompany, которая реализует методы делегата NSCoding.
- (void) encodeWithCoder:(NSCoder *)encoder {
[encoder encodeObject:address_1 forKey:kAddress_1];
[encoder encodeObject:address_2 forKey:kAddress_2];
[encoder encodeObject:city_town forKey:kCity_Town];
[encoder encodeObject:company_name forKey:kCompany_Name];
[encoder encodeObject:country forKey:kCountry];
[encoder encodeObject:date_added forKey:kDate_Added];
[encoder encodeObject:fax forKey:kFax];
[encoder encodeObject:parent_company_website forKey:kWebsite];
[encoder encodeObject:postal_code forKey:kPostal_Code];
[encoder encodeObject:state_province forKey:kState_Province];
[encoder encodeObject:type forKey:kType];
[encoder encodeObject:stores forKey:kStores]; //NSArray of custom NSObjects
}
Как видите, у меня есть NSArray пользовательских NSObjects (MAStore). Каждый из этих объектов также реализует один и тот же NSCoding, а что нет.
Однако у меня вопрос: когда я вызываю метод encodeWithCoder:(NSCoder *)encoder
в MAStore и он попадает в [encoder encodeObject:stores forKey:kStores]
, будут ли все объекты, хранящиеся в stores
NSArray, вызывать метод encoderWithCoder:(NSCoder *)encoder
, если он реализован?
ИЗМЕНИТЬ
Причина, по которой я спрашиваю об этом, заключается в том, что я хочу знать, сработает ли это, прежде чем тратить время на это. У меня есть несколько пользовательских NSObjects с NSArrays, которые содержат больше пользовательских NSObjects. Это будет долгий процесс, чтобы обнаружить, что это не работает.