2013-04-25 28 views
9

Tôi có danh sách giá cổ phiếu với các thuộc tính dateTimevalue.Bộ đặt hàng và dữ liệu cốt lõi (NSOrderedSet)

Hiện tại tôi sắp xếp giá cổ phiếu khi tìm nạp chúng bằng cách sử dụng bộ mô tả sắp xếp.

Bây giờ, tôi muốn thay đổi mã của mình và lưu trữ chúng theo thứ tự đã được sắp xếp để nhanh hơn truy lục giá cổ phiếu hiện tại nhất (dateTime = max).

Tôi chèn giá cổ phiếu từng người một bằng

SharePrice *priceItem= [NSEntityDescription insertNewObjectForEntityForName:@"SharePrice" inManagedObjectContext:context];

Làm thế nào tôi có thể sắp xếp các giá cổ phiếu ngay sau khi chèn chúng bằng một bộ mô tả sắp xếp trên dateTime?

Hoặc tôi có cần chuyển đổi nó thành NSMutableOrderedSet và sử dụng sortUsingComparator: không?

Cảm ơn bạn!

Trả lời

21

Ordered property on CoreData

Đánh dấu hộp kiểm Đã đặt hàng của thuộc tính trong mô hình CoreData của bạn.

Đồng thời đảm bảo đặt di chuyển tự động CoreData trong AppDelegate của bạn (từ điển tùy chọn khi tạo PersistentStore). Bằng cách này, CoreData sẽ có thể thực hiện thay đổi này mà không bị mất dữ liệu.

+1

Làm thế nào tôi có thể sắp xếp lại một tập hợp đặt hàng hiện có trong cơ sở dữ liệu? – AlexR

+0

Tôi nghĩ bạn không thể tự động làm điều đó. Bạn có thể thực hiện một chức năng để đặt hàng dựa trên một số tiêu chí như thứ tự hoặc ngày tháng. Nếu bạn thay đổi 'NSSet' thành' NSArray' trong Mô hình CoreData của mình, tôi giả sử bạn không có thứ tự trước đó, vì vậy nó sẽ lấy "allObjects" từ 'NSSet' cũ và thêm nó vào mảng của bạn. –

0

Tôi không chắc chắn cách sử dụng NSMutableOrderedSet sẽ ảnh hưởng đến cơ sở dữ liệu sqlite cơ bản. Nó là tốt đẹp để nghĩ rằng nó sẽ lưu trữ nó theo thứ tự của bộ, nhưng việc thực hiện cơ bản là một blackbox và tôi không nghĩ rằng có bất kỳ đảm bảo rằng nó sẽ làm việc liên tục, nếu nó làm việc ở tất cả.

Nếu đó là mức tăng hiệu suất bạn đang tìm kiếm, tôi cho rằng việc thêm chỉ mục vào thuộc tính đó sẽ là phương pháp tốt nhất.

+0

Với những gì đã nói, mysql không hỗ trợ nhóm chỉ số (trong đó ảnh hưởng đến các loại trên đĩa). Tôi không chắc chắn nếu nó được tiếp xúc trong CoreData, nhưng đó là một cái gì đó bạn có thể nhìn vào. –

+0

Tôi có thuộc tính được lập chỉ mục và thực hiện sắp xếp với từng lần tìm nạp. Tuy nhiên, tôi cần cải thiện hiệu suất và muốn lưu trữ các mục theo thứ tự được sắp xếp. – AlexR

+8

MySQL phải làm gì với bất kỳ thứ gì ở đây? –

3

tôi muốn thêm vào câu trả lời được chấp nhận, nếu bạn có một NSSet, nó phải được thay đổi thành một NSOrderedSet sau khi chọn hộp kiểm ra lệnh

+0

Cảm ơn, đây là chi tiết về việc thay đổi thành NSOrderedSet là những gì tôi đến đây để tìm. –

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