Вы не можете отправить сообщение объекту, если у вас нет указателя на этот объект, поэтому в базовом смысле ответ на ваш вопрос - нет, другого пути нет.
Однако предполагается, что эта имеющаяся у вас структура данных представляет собой своего рода модель данных. Как таковой, он, вероятно, должен содержаться в некотором классе модели, который понимает его части, и этот класс должен быть единственным, который должен понимать, как хранятся данные. Класс модели должен предлагать интерфейс данных более высокого уровня. Скажем, dict3 представляет одно конкретное транспортное средство во флоте, а ключами являются такие вещи, как «vehicleTag», «registrationDate», «purchaseDate» и т. Д. Возможно, словари на уровне dict2 представляют флоты в разных регионах, а сам dict2 представляет северо-восточный флот. , Тогда класс VehiclePool, класс вашей модели, в котором хранятся все данные, может предлагать такие методы:
-registrationDateForVehicle:(int)vehicleIndex inFleet:(NSString*)fleetKey;
-setRegistrationDate:(NSDate*)regDate forVehicle:(int)vehicleIndex inFleet:(NSString*)fleetKey;
Я не уверен, что мне действительно нужен такой API - я бы предпочел получить список транспортных средств для данного парка, а затем оперировать на тех, у которых более простые средства доступа, но вы, кажется, хотите избежать нескольких уровни доступа. Дело в том, что вам не нужно писать тонну кода для выполнения необходимых операций; Вы должны написать методы, которые знают, как получить доступ к данным, а затем вызвать их.