내 API에서 JSON 객체를 당겨 (가늠자에 갈 수없는 방법) 다음 코드를 사용하여 만드는 오전 대 :의의 Obj-C setValuesForKeysWithDictionary 64 비트 32 비트
+ (YActivity *)instanceFromDictionary:(NSDictionary *)jsonDictionary
{
YActivity * instance = [[YActivity alloc] init];
[instance setAttributesFromDictionary:jsonDictionary];
return instance;
}
- (void)setAttributesFromDictionary:(NSDictionary *)jsonDictionary
{
if (![jsonDictionary isKindOfClass:[NSDictionary class]]) {
return;
}
[self setValuesForKeysWithDictionary:jsonDictionary];
}
하나 키는 "유형"입니다. 읽기 전용 변수 @synthesized "type"이 있습니다. 내 앱의 32 비트 버전에서는 setValue:(id)value forUndefinedKey:(NSString *)key
이 호출되기 전에 바로 설정됩니다. 이 메소드에서이 값을 참조하고 64 비트 버전의 앱에서 중단 점이이 메소드에 도달 할 때 유형이 아직 설정되지 않았습니다.
분명히 이것은 최선의 행동이 아닙니다. 나는 다른 사람이 이것을 보았는지 또는 내가 잘못된 나무를 짖고 있는지 궁금해하고있다. 나는 두 가지 버전 사이에서 파일을 엇나 봤는데 그것들은 동일하다. 나는 둘 다 iOS 8.1 Simulator에서 실행 중이며, API는 두 가지 모두 동일한 결과를 반환합니다. 기본적으로 정의 된 이전 버전의 키는 정의되지 않은 상태로 설정되며, 새 버전에서는 반대입니다.
사전은 순서가 지정되지 않은 모음입니다. 코드는 사전의 키가 열거되는 순서에 대해 가정해서는 안됩니다. – jlehr
예, 명확하게 여기에 잘못되었습니다. 어떤 점에서이 방법의 순서가 바뀌 었는지 아는 사람이 있는지 궁금합니다. 사전의 직렬화에 의존하는 것은 올바르지 않습니다. – JeffN
'이 방법의 순서'가 의미하는 바를 잘 모릅니다. 다양한 객체 유형에 의해 생성 된 해시는 64 비트 시스템과 32 비트 시스템에서 다를 수 있으므로 사용자가 보는 차이를 설명 할 수 있습니다. – jlehr