2012-04-25 54 views
9

Tôi hy vọng sẽ tìm cách kiểm tra, nếu thuộc tính CoreData trống. Bản thân thuộc tính là loại dữ liệu nhị phân. Nếu thuộc tính trống thì tôi có thể yêu cầu lớp của tôi tải xuống và lưu một số dữ liệu vào thuộc tính này.Kiểm tra xem thuộc tính CoreData có trống không

Theo tài liệu CoreData, bạn không nên tiếp tục tìm nạp để xem các đối tượng có tồn tại không. Tôi tự hỏi nếu có một cách để có thể làm điều này? mà không vi phạm 'luật' này?

Đây là nỗ lực đầu tiên của tôi khi sử dụng CoreData. Tôi thêm nó vào mã của tôi sau đó, mà là hơi đau đớn hơn, nhưng như một toàn thể cho đến nay tất cả mọi thứ dường như sẽ ổn. Tôi chỉ cần tìm ra cách kiểm tra hợp lý nếu thuộc tính có giá trị. Nếu không thì tôi cần phải tải xuống và lưu dữ liệu mới, nếu có thì tôi chỉ sử dụng những gì trong thuộc tính.

Cập nhật:

Tôi chỉ tìm thấy phương pháp này trong khuôn khổ CoreData mà tôi đã được đọc mặc dù cố gắng để bắt một break về vấn đề này. Không chắc chắn nếu nó sẽ giúp .. những gì bạn guys nghĩ?

willAccessValueForKey: Cung cấp hỗ trợ cho thông báo quan trọng giá trị truy cập thông báo.

  • (void) willAccessValueForKey: (NSString *) key Khóa thông số Tên của một trong các thuộc tính của người nhận. Thảo luận Xem didAccessValueForKey: để biết thêm chi tiết. Bạn có thể gọi phương thức này với giá trị khóa là 0 để đảm bảo rằng lỗi đã được kích hoạt, như được minh họa bằng ví dụ sau.

[aManagedObject willAccessValueForKey: nil];

Không chắc chắn .. những thứ mà tôi không hiểu là Cung cấp hỗ trợ cho thông báo truy cập quan trọng-giá trị quan trọng. ???

Trả lời

11

Thông báo đó là khi nào giá trị sẽ được truy cập.

Nếu tôi hiểu chính xác bạn, bạn không muốn xem liệu một thực thể có tồn tại hay không, mà là một thuộc tính trong thực thể. Vì vậy, tôi giả sử bạn có nó đánh dấu là một thuộc tính tùy chọn.

Giả sử bạn có thuộc tính dữ liệu nhị phân được gọi là rawData. Nếu bạn muốn tìm tất cả các đối tượng @ "MyEntity" trong cơ sở dữ liệu không có bất kỳ tập dữ liệu nào cho thuộc tính này, bạn cn đưa ra yêu cầu tìm nạp này.

NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"MyEntity"]; 
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"rawData = nil"]; 
NSArray *results = [managedObjectContext executeFetchRequest:fetchRequest error:0]; 
+0

được thôi .. cảm ơn vì điều đó. Nó chỉ là một sự lo lắng bởi vì tôi đã đọc rằng phát hành cho nhiều yêu cầu tìm nạp là một điều nghịch ngợm để làm ..: P –

+3

Bạn luôn có thể ngăn không cho ai đó tạo ra một đối tượng có thuộc tính trống bằng cách làm cho nó không bắt buộc. Hoặc bạn có thể xây dựng các đối tượng giám sát các thay đổi của cơ sở dữ liệu và thêm/xóa các đối tượng vào một danh sách chung khi có giá trị thuộc tính nil/non-nil không gian. –

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