Tengo una propiedad que cambia a no válida cuando me muevo entre viewDidLoad y viewWillAppear. No tengo idea de por qué sucede eso.¿Por qué la propiedad NSString cambia a un valor no válido?
Tengo una clase auxiliar que obtiene la ruta a mi base de datos. Asigno esta clase en el delegado de la aplicación. RootViewController obtiene una referencia a la AppDelegate así:
//inside .h file
@interface RootViewController : UITableViewController
<UITableViewDelegate, UITableViewDataSource>{
NSArray *controllers;
myAppDelegate *appDelegate;
}
//inside .m file
@implementation RootViewController
@synthesize controllers;
- (void)viewDidLoad {
appDelegate = [[UIApplication sharedApplication] delegate];
self.controllers = appDelegate.topicControllers;
[super viewDidLoad];
}
I del ratón sobre AppDelegate para encontrar la clase de ayuda base de datos y la propiedad que contiene la ruta de base de datos:
NSPathStore2 * appDelegate.databaseHeper.databasePath "/Users/userA/Library/Application Support/iPhone Simulator/User/Applications..."
de databasePath se declara una NSString. ¿Por qué ha cambiado a NSPathStore2?
Mientras continúo en el depurador sucede algo extraño. Una vez que aparece en viewWillAppear, el valor de la propiedad se vuelve "inválido" y el tipo vuelve a NSString. Aunque incluso he visto UIButton allí.
¿Por qué cambia a no válido? Ya no puedo usar la variable.
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated]; //changes before this line executes
}
No hago nada entre viewDidLoad y viewWillAppear. Aquí es cómo se asigna de databasePath en la clase databaseHelper, que se da antes de applicationDidFinishLaunching:
- (NSString *) getDBPath {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES);
NSString *documentsDir = [paths objectAtIndex:0];
return [documentsDir stringByAppendingPathComponent:self.databaseName];
}
stringByAppendingPathComponent devuelve un NSString. ¿Por qué obtengo un NSStorePath2 algún día después de la asignación?
Tengo todo funcionando sin problemas ahora solo llamando a [databaseHelper getDBpath]. Mi objetivo es guardar algunos ciclos de CPU y almacenar ese valor. De ahí que databasePath. ¿Alguna sugerencia de por qué el DatabasePath cambia a inválido?
¿Por qué los votos a favor? ¡Esta es una pregunta mejor que una buena cantidad de preguntas pobres que reciben toneladas de votos favorables! –