2016-12-01 3 views
0

Objective-c tritt extrem neu für mich:Lesen lokalen Speicher, wenn iOS app Hintergrund

Das Verfahren unten, wenn App in den Hintergrund verschoben mein iphone auslöst. In diesem Moment möchte ich die Objekte im lokalen Speicher von UIWebView abrufen und in der App speichern.

Ich erhalte den Fehler "No known class for selector 'stringByEvaluatingJavaScriptFromString:jsString'". Wie injiziere ich diese Abhängigkeit in diese Funktion, während ich immer noch UIApplication halte?

- (void)applicationDidEnterBackground:(UIApplication *)application 
{ 
    // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 
    // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. 

    //Persist local storage data 
    NSLog(@"Persisting local storage since app entering background"); 

    //Reading local storage item 
    NSString *jsString = @"localStorage.getItem('mpo.subdomain');"; 
    NSString *someKeyValue = [UIWebView stringByEvaluatingJavaScriptFromString:jsString]; 

    // Store your subdomain in iPhone persistence variable and use it later in the application 
    NSUserDefaults *userdefault = [NSUserDefaults standardUserDefaults]; 
    [userdefault setObject:someKeyValue forKey:@"subdomain"]; 
    [userdefault synchronize]; 

    //use of User default 
    NSLog(@"User Subdomain %@",[userdefault valueForKey:@"subdomain"]); 
} 

Antwort

1

Der Code [UIWebView stringByEvaluatingJavaScriptFromString:] versucht, eine Klassenmethode stringByEvaluatingJavaScriptFromString auf der UIWebview Klasse aufgerufen aufzurufen. Die stringByEvaluatingJavaScriptFromString Methode ist eine Instanzmethode. Sie müssen diese Nachricht an eine Instanz von UIWebView senden, nicht an die Klasse.

Wenn Sie eine Eigenschaft myWebView haben dann würden Sie den Code verwenden:

[self.myWebView stringByEvaluatingJavaScriptFromString:] 

dass die stringByEvaluatingJavaScriptFromString Nachricht an die Instanz sendet von UIWebview auf Eigentum durch die self.myWebView hingewiesen. Das ist, was du willst.

+1

BTW, warum lernst du Objective-C? Als neuer iOS-Entwickler würde ich vorschlagen, Swift (speziell Swift 3) zu lernen. Das ist die Richtung, in die Apple für alle neuen Entwicklungen geht. Ziel-C ist auf dem Weg nach draußen. In weiteren 5 Jahren wird der einzige Objective-C-Code wahrscheinlich Legacy-Code sein. –

+0

Danke Duncan! Ich überprüfe das heute noch einmal. Um Ihre Frage zu beantworten, arbeite ich in objective-c, weil ich ein bestehendes Projekt modifiziere. Ich überprüfe, ob ich die schnelle Syntax innerhalb des Projekts mischen kann. Ich bin mir nicht sicher, ob das möglich ist. – That1guyoverthr

+0

Duncan, kannst du mir hier bei den nächsten Schritten helfen? :) http://stackoverflow.com/questions/40943693/stringbyevaluatingjavascriptfromstring-does-nothing – That1guyoverthr

Verwandte Themen