данные ядра iPhone, вставляющие новые объекты

Я также рекомендовал бы экспериментировать с регулярными выражениями с помощью "Экспресса" - это - утилита великое (и свободный) утилита для regex редактирование и тестирование.

Один из его позитивных аспектов - то, что его UI представляет большую regex функциональность, что люди unexprienced с regex не могли бы быть знакомы с, способом что для них будет легко изучить эти новые понятия.

, Например, при создании regex использование UI и выбор "*", у Вас есть способность проверить флажок "As few as possible" и видеть получающийся regex, а также протестировать его поведение, даже если Вы были незнакомы с нежадными выражениями прежде.

Доступный для скачивания на их сайте: http://www.ultrapico.com/Expresso.htm

загрузка Экспресса: http://www.ultrapico.com/ExpressoDownload.htm

18
задан Bill the Lizard 29 March 2012 в 12:20
поделиться

2 ответа

Когда вы определяете связь в модели данных, набор определяется в заголовке содержащего объекта. Просто добавьте или удалите элементы из набора, используя обычные методы NSMutableSet.

Чтобы добавить новый управляемый объект, сделайте что-то вроде:

Task* newTask = [NSEntityDescription insertNewObjectForEntityForName:@"Task" inManagedObjectContext:self.managedObjectContext];

Если вы возьмете образец Location от Apple и начнете работать оттуда, вы разберетесь с ним, хотя он не содержит отношений. Чтобы все это работало, просто измените свою модель данных на то, чем она должна быть, и не думайте об этом как о взаимосвязи, просто думайте об этом как о «A имеет NSMutableSet of B». Поскольку вы определили обратные отношения, как рекомендовано в документации, вам не нужно думать о том, что B имеет от A, просто начните думать в терминах B, когда этот объект имеет для вас значение.

Допустим, у вас есть объект Airport, который имеет объект Board (и представьте, что вы устанавливаете исходную точку и пункт назначения в Flight с помощью переменной routingArray ,

25
ответ дан 30 November 2019 в 06:25
поделиться

Есть несколько вариантов:
1. Вы можете использовать add Object: в NSManagedObject:

NSManagedObject *flightBoard = [NSEntityDescription insertNewObjectForEntityForName:@"FlightDepartureBoard" inManagedObjectContext:self.managedObjectContext];
NSManagedObject *details = [NSEntityDescription insertNewObjectForEntityForName:@"Flight_Details" inManagedObjectContext:self.managedObjectContext];
[flightBoard addCurrent_flightsObject:details];

Хотя вы получите предупреждение компилятора, если вы не определите аксессоры в категории:

@interface NSManagedObject (Current_flightsAccessors)
- (void)addCurrent_flightsObject:(NSManagedObject *)value;
- (void)removeCurrent_flightsObject:(NSManagedObject *)value;
- (void)addCurrent_flights:(NSSet *)value;
- (void)removeCurrent_flights:(NSSet *)value;
@end

2. Подкласс. Вы можете сгенерировать файлы классов из вашей модели, которые будут включать аксессоры для отношений ко многим:

FlightDepartureBoard.h:

#import <CoreData/CoreData.h>
@class Flight_Details;
@interface FlightDepartureBoard : NSManagedObject 
{
}
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSString * from_airport;
@property (nonatomic, retain) NSString * to_airport;

@interface FlightDepartureBoard (CoreDataGeneratedAccessors)
- (void)addCurrent_flightsObject:(Flight_Details *)value;
- (void)removeCurrent_flightsObject:(Flight_Details *)value;
- (void)addCurrent_flights:(NSSet *)value;
- (void)removeCurrent_flights:(NSSet *)value;
@end

FlightDepartureBoard.m:

#import "FlightDepartureBoard.h"
#import "Flight_Details.h"
@implementation FlightDepartureBoard
@dynamic name;
@dynamic from_airport;
@dynamic to_airport;
@dynamic current_flights;
@end

3. Вы можете получить изменяемый набор и изменить его с помощью mutableSetValueForKey :. Например:

NSManagedObject *flightBoard = [NSEntityDescription insertNewObjectForEntityForName:@"FlightDepartureBoard" inManagedObjectContext:self.managedObjectContext];
NSManagedObject *details = [NSEntityDescription insertNewObjectForEntityForName:@"Flight_Details" inManagedObjectContext:self.managedObjectContext];
NSMutableSet *flights = [flightBoard mutableSetValueForKey:@"current_flights"];
[flights addObject:details];

Дополнительные сведения см. В разделе Методы доступа к управляемым объектам .

25
ответ дан 30 November 2019 в 06:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: