Apple documentation on -setPrimitiveValue:forKey:
là mơ hồ theo hai cách khi sử dụng nó để quản lý nhiều mối quan hệ.setPrimitiveValue: forKey: và nhiều mối quan hệ
Đầu tiên họ nêu:
Nếu bạn cố gắng thiết lập một mối quan hệ với nhiều người đến một đối tượng NSMutableSet mới, nó sẽ (cuối cùng) thất bại.
Cuối cùng ?! Điều đó có nghĩa là gì? Nó sẽ thất bại sau này trong -[NSManagedObjectContext save:]
? Khi một đối tượng được quản lý bị biến thành lỗi và sau đó được quay trở lại? Khi nào? Tôi có thể viết một trường hợp thử nghiệm để luôn tạo lại sự thất bại theo yêu cầu không?
Thứ hai, cung cấp mẫu mã để xử lý một cách chính xác trường hợp này, họ viết:
đầu tiên được thiết lập hiện tại sử dụng
primitiveValueForKey:
(đảm bảo phương pháp này không trả lạinil
)
Tôi nên làm gì nếu/khi phương thức thực hiện trả lại số không? assert()
nó và thất bại ngay lập tức bởi vì điều đó có nghĩa là toàn bộ đồ thị đối tượng bị hỏng và tiết kiệm sẽ dẫn đến mất dữ liệu? NSAssert()
trên đó như một cảnh báo cho người gọi nhưng nhấn vào (âm thầm không làm gì)?
Ngay bây giờ tôi đang đơn giản trực tiếp gán mong muốn NS[Mutable]Set
trong trường hợp đó, như vậy tôi:
- (void)setChildren:(NSSet*)value_ {
NSMutableSet *mutableRelationshipSet = [[[self primitiveValueForKey:@"children"] mutableCopy] autorelease];
if (mutableRelationshipSet) {
[mutableRelationshipSet setSet:value_];
[self setPrimitiveValue:mutableRelationshipSet forKey:@"children"];
} else {
[self setPrimitiveValue:value_ forKey:@"children"];
}
}
Có phải đó là sai?