У меня появился очень интересный вопрос.
В одном из классов я объявил очень простой экземпляр метода -(NSD словарь)словарь; который реализован таким образом:
- (NSDictionary *)dictionary {
return [NSDictionary dictionaryWithObjectsAndKeys:
self.userID, @"id",
self.userName, @"name",
self.userSurname, @"sName",
self.userNickname, @"nName",
self.userPassword, @"pwd",
[NSNumber numberWithDouble:[self.userBirthday timeIntervalSince1970] * 1000], @"birthday",
self.userSex, @"sex",
self.userEmail, @"email",
self.userLanguage, @"locale",
[NSNumber numberWithLongLong:self.userCoin], @"coin",
self.userRate, @"rate",
[NSNumber numberWithDouble:self.userCoordinate.latitude], @"lat",
[NSNumber numberWithDouble:self.userCoordinate.longitude], @"lon",
self.userPlaces, @"userPlaces",
nil];
}
с объявлением этого метода в моем возвращаемом словаре нет ключа @"userPlaces" (self.userPlace явно валоризирован и наполнен объектами).
Так что я немного изменил свой метод следующим образом:
- (NSDictionary *)dictionary {
NSMutableDictionary *toReturn = [NSMutableDictionary dictionary];
[toReturn setValue:self.userID forKey:@"id"];
[toReturn setValue:self.userName forKey:@"name"];
[toReturn setValue:self.userSurname forKey:@"sName"];
[toReturn setValue:self.userNickname forKey:@"nName"];
[toReturn setValue:self.userPassword forKey:@"pwd"];
[toReturn setValue:[NSNumber numberWithDouble:[self.userBirthday timeIntervalSince1970] * 1000] forKey:@"birthday"];
[toReturn setValue:self.userSex forKey:@"sex"];
[toReturn setValue:self.userEmail forKey:@"email"];
[toReturn setValue:self.userLanguage forKey:@"locale"];
[toReturn setValue:[NSNumber numberWithLongLong:self.userCoin] forKey:@"coin"];
[toReturn setValue:self.userRate forKey:@"rate"];
[toReturn setValue:[NSNumber numberWithDouble:self.userCoordinate.latitude] forKey:@"lat"];
[toReturn setValue:[NSNumber numberWithDouble:self.userCoordinate.longitude] forKey:@"lon"];
[toReturn setValue:self.userPlaces forKey:@"userPlaces"];
return [NSDictionary dictionaryWithDictionary:toReturn];
}
Весь ключ теперь присутствует внутри выходного словаря!!!
Эта проблема сводила меня с ума, чтобы понять, но мой вопрос в том... Есть ли причина, по которой второй метод работает лучше, чем первый?
Я не нашел причины для этого.