나는 이것을 post에 관한 몇 가지 연구를했다. 그러나 그 해결책은 전혀 없습니다. 제가 무슨 짓을했는지 설명하게하십시오 :NSOrderedSet에 코어 데이터를 추가하는 방법은 무엇입니까?
그것은 실제로 언급 한 게시물과 매우 유사합니다. 내보기 컨트롤러에서 Category.h
@class Category, Item;
@interface Category : NSManagedObject
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSOrderedSet *items;
@property (nonatomic, retain) Category *parentcategory;
@property (nonatomic, retain) NSSet *subcategories;
@end
@interface Category (CoreDataGeneratedAccessors)
- (void)insertObject:(Item *)value inItemsAtIndex:(NSUInteger)idx;
- (void)removeObjectFromItemsAtIndex:(NSUInteger)idx;
- (void)insertItems:(NSArray *)value atIndexes:(NSIndexSet *)indexes;
- (void)removeItemsAtIndexes:(NSIndexSet *)indexes;
- (void)replaceObjectInItemsAtIndex:(NSUInteger)idx withObject:(Item *)value;
- (void)replaceItemsAtIndexes:(NSIndexSet *)indexes withItems:(NSArray *)values;
- (void)addItemsObject:(Item *)value;
- (void)removeItemsObject:(Item *)value;
- (void)addItems:(NSOrderedSet *)values;
- (void)removeItems:(NSOrderedSet *)values;
- (void)addSubcategoriesObject:(Category *)value;
- (void)removeSubcategoriesObject:(Category *)value;
- (void)addSubcategories:(NSSet *)values;
- (void)removeSubcategories:(NSSet *)values;
@end
, 나는 범주 중 하나를로드
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:kEntityCategory];
request.sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor
sortDescriptorWithKey:kAttributeCategoryName ascending:YES
selector:@selector(localizedCaseInsensitiveCompare:)]];
NSError *error = nil;
AppDelegate* appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
NSArray* data = [appDelegate.dataCenter.document.managedObjectContext executeFetchRequest:request error:&error];
if (data.count > 0)
{
self.category = [data objectAtIndex:0];
}
내가 테스트 목적으로 탐색 표시 줄에 버튼이 있습니다. 클릭하면 첫 번째 항목이 복사되고 끝에 추가됩니다.
Item* item = [self.category.items objectAtIndex:0];
[self.category willChangeValueForKey:@"items"];
NSMutableOrderedSet *tempSet = [NSMutableOrderedSet orderedSetWithOrderedSet:self.category.items];
[tempSet addObject: item];
self.category.items = tempSet;
[self.category didChangeValueForKey:@"items"];
문제는 항목에서 모든 데이터베이스에 추가되지 않습니다이다. (예를 들어, 테스트를했는데 항목 내용을 수정하면 데이터베이스에 전혀 문제가 없음을 증명합니다.) 그러나 항목이 데이터베이스에없는 이유는 알 수 없습니다. 아무도 도와 줄 수 있니? 감사합니다
NSEntityDescription insertNewObjectForEntityForName을 사용하여 새 항목을 항목의 끝에 추가 할 수 있습니다. 카테고리에 항목 중간에 새 항목을 삽입 할 방법이 없기 때문에 문제가 해결되지 않습니다. –