objective c - CoreData How to connect with relationship entity to another entity with already preloaded data? -
this first application in coredata missing here, spend on week trying find solution , apparently nobody on net had same problem ;)
i'm creating deckbuilder app.: model looks this: coredatamodel
the relationship to-one , inverse to-many ( every card can in 1 set, , in every set can many cards) card set.
for sake of simplicity want focus on card , set entities. preloaded info set csv file 5 atributes - didnt fill relationship "karty" because didn't know how this. there 25 records in entity.
and now, problem trying fill cards entity have on 500 records. trying few options found on end connection created 500 records in set too:/ looked sql "join" command.
what want load info cards , connect them somehow set not changing number of records in set.
if have property (nonatomic, retain) nsset *karty; nsset means? s et set of what? set of single rows card entity? set of card objects? set of nsstrings? set of nsmanagedobjects?
in normal sql primary key connect them "nazwaszort" card.nazwaszort=set.nazwaszort.
my set.h
@class card; @interface set : nsmanagedobject @property (nonatomic, retain) nsnumber * cykl; @property (nonatomic, retain) nsnumber * czymajor; @property (nonatomic, retain) nsstring * nazwa; @property (nonatomic, retain) nsstring * nazwashort; @property (nonatomic, retain) nsnumber * nrwcyklu; @property (nonatomic, retain) nsset *karty; @end @interface set (coredatageneratedaccessors) - (void)addkartyobject:(card *)value; - (void)removekartyobject:(card *)value; - (void)addkarty:(nsset *)values; - (void)removekarty:(nsset *)values; @end my card.h
@class frakcja, kolekcja, set; @interface card : nsmanagedobject @property (nonatomic, retain) nsnumber * czylimit; @property (nonatomic, retain) nsstring * frakcja; @property (nonatomic, retain) nsstring * icesila; @property (nonatomic, retain) nsnumber * iloscwsecie; @property (nonatomic, retain) nsnumber * influence; @property (nonatomic, retain) nsstring * kodkarty; @property (nonatomic, retain) nsnumber * koszt; @property (nonatomic, retain) nsnumber * minimumdecksize; @property (nonatomic, retain) nsstring * nazwa; @property (nonatomic, retain) nsstring * nazwasetu; @property (nonatomic, retain) nsstring * nazwaszort; @property (nonatomic, retain) nsnumber * nrcyklu; @property (nonatomic, retain) nsstring * podtyp; @property (nonatomic, retain) nsstring * strona; @property (nonatomic, retain) nsnumber * trashkoszt; @property (nonatomic, retain) nsstring * typ; @property (nonatomic, retain) kolekcja *ilewkolekcja; @property (nonatomic, retain) frakcja *nazwafrakcji; @property (nonatomic, retain) set *wjakimsecie; @end i preloaded cards set using method
-(void) preloaddatapackinfotodatabase { nserror *error=nil; nsstring *sciezka = [[nsbundle mainbundle]pathforresource:@"nrsets" oftype:@"csv"]; nsarray *rows = [nsarray arraywithcontentsofcsvfile:sciezka]; (int i=1; <=([rows count]-1); i++) { set *nowydatapack = [nsentitydescription insertnewobjectforentityforname:[entityset name] inmanagedobjectcontext:_contextdp]; nslog(@"tablica wierszy %@",rows[i][2]); nsstring *koddodatku = rows[i][2]; nslog(@"kod dodatku:%@",koddodatku); nsstring *nrwcyklu = rows[i][4]; nsstring *nrcyklu = rows[i][3]; nsstring *nazwadatapack =rows[i][3]; nsstring *czymajor =rows[i][0]; [nowydatapack setvalue:nazwadatapack forkey:@"nazwa"]; nsnumberformatter *f = [[nsnumberformatter alloc]init]; [f setnumberstyle:nsnumberformatterdecimalstyle]; nsnumber *nrwcykluint = [f numberfromstring:nrwcyklu]; nsnumber *nrcykluint = [f numberfromstring:nrcyklu]; nsnumber *czymajorbool = [f numberfromstring:czymajor]; [nowydatapack setvalue:nrwcykluint forkey:@"nrwcyklu"]; [nowydatapack setvalue:nrcykluint forkey:@"cykl"]; [nowydatapack setvalue:koddodatku forkey:@"nazwashort"]; [nowydatapack setvalue:czymajorbool forkey:@"czymajor"]; } if (![ self.contextdp save:&error]) { nslog(@"nieznany błąd %@,%@",error,[error userinfo]); } } and method (on pastebin not flood screens --> preloadallcardstodatabase
thanks in advance help.
ok did it. had move coredata stuff outside loop. still dont understand whole magic @ to the lowest degree works. interested preloading function --> here
objective-c core-data relationship
No comments:
Post a Comment