문제

마지막으로 저를 고민했던 질문입니다.저는 주로 iPhone 및 Mac 용 Objective-C를 다루는 .net 개발자입니다.

object-c의 메소드간에 "데이터 세트"를 전송하는 방법은 무엇입니까?예를 들어 C #에서는 사용자 지정 클래스를 데이터로 채우고 List of type custom class로 전달할 수 있습니다.예를 들어 고객 클래스가 있다면 다음과 같이하면됩니다. 라코 디스

이 작업이 obj-c에서 어떻게 수행되는지 볼 수있는 유일한 방법은 NSArray를 사용자 지정 개체로 채우는 것입니까?이것이 일을하는 효율적인 방법입니까?다른 권장 사항이 있습니까?반환하려는 데이터베이스 / 데이터로 sqlite를 사용하고 있습니다.

도움이 되었습니까?

해결책

올바른 길을 가고 있습니다.

Cocoa의 컬렉션 클래스 (모두 변경 가능하고 변경 불가능한 변형 포함)는 다음과 같습니다.

  • NSArray : 정렬 됨, 개체를 여러 번 포함 할 수 있음
  • NSDictionary : 정렬되지 않음, 키에서 값으로 매핑, 키가 복사 됨
  • NSSet : 정렬되지 않음, 개체를 한 번만 포함 할 수 있음
  • NSCountedSet : 정렬되지 않음, 개체를 여러 번 포함 할 수 있음

    불변 변형은 효율성에 많은 도움이됩니다. 변경 가능한 변형이있는 클래스의 접근 자에 대한 표준 패턴은 유지하는 것이 아니라 복사하는 것입니다. 이것은 속성의 @property 속성을 사용하여 copy 메커니즘에 코드화되어 있습니다. 라코 디스

    이것은 배열을 취하는 무언가에 가변 배열을 전달하면 복사되고 다른 것에 전달하면 다시 복사된다는 것을 의미합니다. 트릭은 변경 불가능한 객체를 "복사"하면 실제로는 그대로 유지되므로 첫 번째 사본에 대해서만 히트를칩니다. 어쨌든 변경 가능한 배열을 다른 것에 전달하지 않도록 처음 복사를 한 다음 전달한 항목의 뒤에서 변경합니다.

    Mac OS X 용 Cocoa의 경우 Core Data도 살펴 보시기 바랍니다. .NET / ADO / etc에서 사용할 수있는 "데이터 세트"패턴의 대안입니다. Core Data를 사용하면 "모든 고객을 확보"한 다음 해당 컬렉션을 전달하지 않습니다. 대신 관심있는 고객을 쿼리하고 쿼리 한 개체의 관계를 탐색 할 때 다른 개체가 자동으로 가져옵니다.

    Core Data는 또한 엔티티의 시각적 모델링, 속성 getter 및 setter의 자동 생성, 한 스키마 버전에서 다른 스키마 버전으로의 마이그레이션에 대한 세분화 된 제어 등과 같은 기능을 제공합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top