2013-02-01 1 views
5

나는 objective-c (괴상한 목장 서적)를 읽고 있는데, 나는이 질문에 대해 생각할 수 없다. 어떤 컬렉션 유형, NSArray 또는 NSDictionary (변경 가능 서브 클래스가 있거나없는 경우) URL에서 콘텐츠를 읽을 때 사용 하시겠습니까?NSDictionary 대. NSArray

사용하려는 PHP 스크립트 (시나리오)에서 JSON 데이터를 읽는다고 가정 해 봅시다. 많은 참조에서 데이터 구조 (예 : JSON)에 따라 다르지만 윤곽이 잡힌 두 구조에 대한 명확한 개요가 명시되어 있습니다. 당신이 개체의 속성을 가질 때

답변

2

당신은 당신이 개체의 동일한 유형의 컬렉션이 그 어느 때 NSArray를 사용하려면 : 도와 주셔서 모두 감사하고, NSDictionary.

name, phone numberemail을 포함하는 person 개체를 사전에 넣으면됩니다.

이렇게하면 값의 순서가 무작위가되며 신뢰할 수있는 코드가됩니다.

사람이 한 명 이상 있으면 사람 개체를 배열에 넣을 수 있습니다.

이렇게하면 사용자 개체를 반복 할 수 있습니다.

+0

동의하지 않음 - '고객'개체를 전화 번호로 검색하려면 어떻게해야합니까? 사전이 균질 한 객체를 보유하는 데는 타당한 이유가 충분합니다. –

+0

답변을 분명히하기 위해 의사 또는 샘플 코드로 요점을 강조하도록 요청할 것입니다. –

+0

@CarlVeazey 물론 특정 요구 사항이있는 경우가 있습니다. 배열을 사용하여 좀 더 일반적인 백엔드를 만들 수 있습니다.이 백엔드는 데이터베이스에서 데이터를 추출하고 JSON을 생성 할 수 있습니다. – EsbenB

10

NSArray은 기본적으로 인덱스로 액세스 할 수있는 개체의 정렬 된 컬렉션입니다.
NSDictionary은 키 (일반적으로 NSString이지만 해시 테이블과 같은 모든 개체 유형이 될 수 있음)를 통해 해당 개체에 액세스 할 수 있습니다.

URL을 통해로드 된 JSON 문자열에서 객체 그래프를 생성하려면 Objective-C 객체 구조를 생성하는 NSJSONSerialization을 사용합니다. 결과 객체는 JSON 문자열에 따라 다릅니다. JSON의 최상위 요소가 배열 인 경우 ("["으로 시작) NSArray가 표시됩니다. 최상위 요소가 JSON 객체 인 경우 ("{"으로 시작) NSDictionary가 표시됩니다.

0

"withContentOfURL"또는 "withContentOfFile"에는 URL 또는 파일의 데이터가 Cocoa에서 요구하는 특정 형식이어야합니다. JSON은 이 아니며 형식입니다. 동일한 데이터로 파일 또는 URL에 데이터를 처음 작성한 경우에만이 방법을 사용할 수 있습니다. NSArray를 작성하면 NSArray를 읽을 수 있습니다. NSDictionary를 작성하면 NSDictionary를 읽을 수 있습니다. 다른 모든 것은 실패 할 것이다.

관련 문제