2008-08-27 35 views
8

Một câu hỏi đã cân nhắc tôi trong thời gian qua. Tôi chủ yếu là một nhà phát triển net. Những người dabbles trong Objective-C cho iPhone và Mac.Đi qua các bộ dữ liệu

Bạn làm cách nào để gửi "bộ dữ liệu" giữa các phương thức trong mục tiêu-c. Ví dụ trong C#, bạn có thể điền một lớp tùy chỉnh với dữ liệu và chuyển nó vào trong một Danh sách loại lớp tùy chỉnh. EG nếu bạn đã có một lớp khách hàng bạn sẽ chỉ làm điều gì đó như:

List<Customer> customers = DataLayer.GetAllCustomers(); 

Cách duy nhất tôi có thể xem làm thế nào điều này có thể được thực hiện trong obj-c sẽ để cư một NSArray với các đối tượng tùy chỉnh? Đây có phải là cách hiệu quả để làm việc không? Bất kỳ đề xuất nào khác? Tôi đang sử dụng sqlite làm cơ sở dữ liệu/dữ liệu tôi muốn quay trở lại.

+0

Ngoài ra, bạn có thể muốn xem xung quanh cho các trình bao bọc nhẹ xung quanh SQLLite để tạo các đối tượng dễ dàng hơn từ cơ sở dữ liệu của bạn. –

Trả lời

24

Bạn đang đi đúng hướng.

lớp học tập Cocoa của - mà tất cả đều có thể thay đổi một biến thể bất biến - là:

  • NSArray: ra lệnh, có thể chứa một đối tượng nhiều lần
  • NSDictionary: không có thứ tự, ánh xạ từ chìa khóa để các giá trị, các phím được sao chép
  • NSSet: không có thứ tự, có thể chứa một đối tượng duy nhất một lần
  • NSCountedSet: không có thứ tự, có thể chứa một đối tượng nhiều lần

Các biến thể không thay đổi sẽ giúp ích rất nhiều với hiệu quả. Mẫu chuẩn cho người truy cập của các lớp có biến thể có thể thay đổi là sao chép thay vì giữ lại. Đây là hệ thống hóa trong cơ chế @property, bằng cách sử dụng các thuộc tính copy về tài sản:

// Department.h 
@interface Department : NSObject 
@property (readwrite, copy) NSSet *employees; 
@end 

Điều này có nghĩa rằng nếu bạn vượt qua một mảng có thể thay đổi một cái gì đó mà phải mất một mảng, nó sẽ được sao chép, và nếu bạn vượt qua mà với một thứ khác, nó sẽ được sao chép lại. Bí quyết là mặc dù "sao chép" một đối tượng bất biến thực sự chỉ giữ lại nó, vì vậy bạn chỉ mất một hit cho bản sao đầu tiên đó. Bạn có thể muốn để tạo bản sao lần đầu tiên, vì vậy, bạn không chuyển mảng có thể thay đổi sang mục khác, sau đó tắt nó sau lưng bất kỳ nội dung nào bạn đã truyền.

Đối với ca cao trên Mac OS X, tôi cũng đặc biệt khuyến khích bạn xem Dữ liệu cốt lõi. Đó là một thay thế cho mẫu "tập dữ liệu" mà bạn có thể được sử dụng từ .NET/ADO/etc. Với Dữ liệu cốt lõi, bạn không "có được tất cả khách hàng" và sau đó vượt qua bộ sưu tập đó xung quanh. Thay vào đó, bạn truy vấn cho khách hàng mà bạn quan tâm và khi bạn duyệt qua các mối quan hệ của các đối tượng bạn đã truy vấn, các đối tượng khác sẽ tự động được kéo vào cho bạn.

Dữ liệu cốt lõi cũng mang lại cho bạn các tính năng như mô hình hóa trực quan các thực thể của bạn, tự động tạo các getters thuộc tính & setters, kiểm soát chi tiết quá trình di chuyển từ phiên bản lược đồ này sang phiên bản khác, v.v.

Các vấn đề liên quan