2009-07-09 27 views
20

Tôi muốn thêm NSMutableArray của NSStrings vào một trong các Thực thể của tôi trong mô hình dữ liệu cốt lõi của tôi. Vấn đề là đây không phải là loại được hỗ trợ trong Dữ liệu cốt lõi.Lưu NSMutableArray vào Dữ liệu Chính

Tôi đã thử tạo thuộc tính có thể thay đổi được, nhưng vấn đề là tôi không thấy cách nào để biến NSMutableArray thành NSData, và sau đó đi từ NSData, trở lại NSMutableArray. Có ai có một ý tưởng như thế nào vấn đề này có thể được giải quyết?

(Tôi biết tôi có thể lưu trữ mảng, nhưng tôi không muốn làm điều đó, tôi muốn nó có mặt trong mô hình của tôi).

Trả lời

32

Bạn có thể có thuộc tính dữ liệu nhị phân trong đối tượng được mô hình hóa của mình, lưu trữ mảng vào dữ liệu và đưa nó cho đối tượng.

Nhưng tôi nghĩ cách tốt hơn là có mối quan hệ nhiều, thay vì sử dụng trực tiếp mảng.

**** Edit: Đây là cách để lưu trữ các mảng vào NSData để nó có thể được sử dụng trong đối tượng quản lý của bạn ***

NSData *arrayData = [NSKeyedArchiver archivedDataWithRootObject:[NSArray arrayWithObjects:@"1",@"2", nil]]; 

Về cơ bản, bất kỳ lớp học mà bạn có mà phù hợp với các giao thức NSCoding có thể được lưu trữ theo cách này. NSArray/NSMutableArray đã phù hợp với nó. Họ nói với tất cả các đối tượng của họ để lưu trữ chính họ, vì vậy họ phải phù hợp quá. Và tất cả các thành viên của những vật thể đó phải phù hợp, vv Nó giống như một cái cây.

Vì mảng của bạn phù hợp, và đó là một mảng của NSString (cũng phù hợp), sau đó bạn là vàng.

+1

Nhưng ở đây chúng tôi có một chuỗi các chuỗi đơn giản - bạn sẽ phải quấn từng chuỗi trong một đối tượng được quản lý hay có bất kỳ loại trình bao bọc NSManagedObject mỏng nào xung quanh NSString đã có sẵn không? –

+0

Làm thế nào để bạn biến mảng chuỗi thành dữ liệu ?? (Tôi tìm thấy một giải pháp cho vấn đề này liên quan đến tôi không phải sử dụng một chuỗi các chuỗi, nhưng tôi vẫn tò mò cho một giải pháp) – gburgoon

+9

Ngược lại là 'NSArray * array = [NSKeyedUnarchiver unarchiveObjectWithData: arrayData];' – Resh32

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