2017-06-20 4 views
0

Ich versuche, rawURL zu bearbeiten, so dass es im richtigen Ordner in meinem Anwendungspaket aussieht. Ich sah Apple's documentation, aber wenn ich meine Anwendung .xcdatamodeld eröffnet, das Attribut, dessen String-Wert Ich bin auf der Suche zu bearbeiten, erscheinen nicht auf etwas festgelegt werden:Wert des Attributs der Entität definieren

enter image description here

Ich schaute in den gesamten Code-Basis, und ich konnte es nirgends programmatisch gesetzt finden. Ich gebe jedoch eine print-Anweisung in den Code ein, den ich ändern möchte, und tatsächlich wird eine Zeichenfolge gedruckt. Ich möchte den Wert dieser Zeichenfolge so ändern, dass sie in FindSpecies/[species name]/[img file] nicht FindSpecies/species/[species name]/images/[img file] aussieht.

NSArray* paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); 
     NSString* cachePath = [paths objectAtIndex:0]; 
     NSString* resourcePath = [[NSBundle mainBundle] resourcePath]; 
     NSLog(@"self.rawurl: %@", self.rawURL); 
     NSString* stringURL = [self.rawURL stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]; 
     NSLog(@"stringURL: %@", stringURL); 
     NSURL* url = [NSURL URLWithString:stringURL]; 
     NSString* path = [url path]; 
     NSString* query = [url query]; 
    //... 
     returnString = [NSString stringWithFormat:@"%@/%@%@", resourcePath, kThumbnailDirectoryName, path]; 

Kann ich rawURL bearbeiten, wenn ich nicht einmal wissen, wo/wie sein Satz in erster Linie?

EDIT: Diese App wurde im Jahr 2011 von ehemaligen Studenten meines Professors gebaut. Ich bin dabei, es zu modernisieren.

+0

Warum würden Sie das tun? Warum nicht einfach 'NSBundle pathForResource: ofType verwenden:' Auch der vollständige Pfad einer Ressource kann sich ändern. –

+0

@JonRose, ich sollte erwähnen, dass ich für meinen Professor eine App repariere, die 2011 von seinen ehemaligen Studenten gebaut wurde. – Matt

Antwort

0

Es gibt keinen Grund zu erwarten, dass rawURL einen Wert im Modelleditor hat, den Sie in Ihrem Screenshot zeigen. Dies definiert das Schema für den persistenten Kerndatenspeicher, nicht die Daten. Möglicherweise sind Standardwerte vorhanden, diese sind jedoch nicht erforderlich.

Wenn rawURL einen Wert hat, wird irgendwo gesetzt. Sie haben den Quellcode, also sollten Sie ihn finden können. Wenn Sie nicht können, schauen Sie noch einmal, denn Sie können sehen, es passiert irgendwo. Wenn Ihre Entität über eine Unterklasse von NSManagedObject verfügt, kann es hilfreich sein, einen Haltepunkt unter der rawURL -Eigenschaftdeklaration in dieser Klasse zu setzen. Der Haltepunkt sollte jedes Mal ausgelöst werden, wenn sich der Wert ändert.

Sie können es natürlich auch jederzeit ändern, wenn Sie eine Objektinstanz mit dieser Eigenschaft wünschen. Weisen Sie einfach einen Wert zu, wie jede andere String-Eigenschaft auch.

Verwandte Themen