Mam właściwość, która zmienia się na nieprawidłową, ponieważ poruszam się między viewDidLoad i viewWillAppear. Nie mam pojęcia, dlaczego tak się dzieje.Dlaczego właściwość NSString zmienia się na nieprawidłową wartość?
Mam klasę pomocniczą, która pobiera ścieżkę do mojej bazy danych. Przydzielam tę klasę do delegata aplikacji. RootViewController pobiera odwołanie do appDelegate tak:
//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 myszy nad appDelegate znaleźć klasę pomocniczą bazę danych i własności zawierający ścieżkę do bazy danych:
NSPathStore2 * appDelegate.databaseHeper.databasePath "/Users/userA/Library/Application Support/iPhone Simulator/User/Applications..."
DatabasePath deklarowaną NSString. Dlaczego zmieniło się na NSPathStore2?
Kontynuując debugger, dzieje się coś dziwnego. Gdy pojawi się viewWillAppear, wartość właściwości staje się "nieważna", a typ powraca do NSString. Pomyślałem, że widziałem tam nawet Uibutton.
Dlaczego jest nieważny? Nie mogę już używać zmiennej.
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated]; //changes before this line executes
}
Nie robię nic między viewDidLoad i viewWillAppear. Oto jak DatabasePath jest przypisany do klasy databaseHelper, który występuje wcześniej applicationDidFinishLaunching:
- (NSString *) getDBPath {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES);
NSString *documentsDir = [paths objectAtIndex:0];
return [documentsDir stringByAppendingPathComponent:self.databaseName];
}
stringByAppendingPathComponent zwraca NSString. Dlaczego po zleceniu dostaję NSStorePath2 po drodze?
Mam wszystko działa bez problemu, ale po prostu wywołanie [databaseHelper getDBpath]. Moim celem jest zaoszczędzenie kilku cykli procesora i zachowanie tej wartości. Stąd databasePath. Wszelkie sugestie, dlaczego zmiany właściwości databasePath są nieprawidłowe?
Dlaczego spadki? To jest lepiej zadane pytanie niż dobra liczba ubogich pytań, które otrzymują mnóstwo przebojów! –