Bestand opslaan werkt wel in simulator maar niet op apparaat.

Bestand opslaan werkt wel in simulator maar niet op apparaat. discussie in Ontwikkelen voor iOS forum; ( verdwijnt na registratie ) Goedemiddag, ik probeer deze code werkend te krijgen: Code: void updateDatabase(){ // Determine remote url and local url according to target #ifdef Durbuy NSString *stringURL ...



Ga terug   iPhone, iPod touch, iPad en Apple TV forum > Development > Ontwikkelen voor iOS
Wachtwoord vergeten? Registreren!
Registreer FAQ Ledenlijst Kalender Zoeken Berichten van vandaag Markeer forums als gelezen
  #1  
Oud 28 October 2012, 18:15
» Ik heb geen iPhone  
» iPad 2 Wi-Fi 32GB (Wit) [FW: 5.1.1]  [Jailbreak: Nee]
» Linux
 
Geregistreerd: 26 July 2012
Berichten: 15
Standaard Bestand opslaan werkt wel in simulator maar niet op apparaat.

Goedemiddag, ik probeer deze code werkend te krijgen:

Code:
void updateDatabase(){
    // Determine remote url and local url according to target
#ifdef Durbuy
    NSString *stringURL = @"http://www.***.**/app/DurbuyAppDatabase.sqlite"; // ** = gemaskeerd.
    NSString  *filePath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"DurbuyAppDatabase.sqlite"];
    NSLog(@"File path: %@",filePath);
#endif
#ifdef LaRoche
    NSString *stringURL = @"http://www.***.**/app/LaRocheApp.sqlite"; // ** = gemaskeerd.
    NSString  *filePath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"LaRocheAppDatabase.sqlite"];

#endif
    
    // Prepare URL from string
    NSURL  *url = [NSURL URLWithString:stringURL];
    
    // Fetch data from server
    NSData *urlData = [NSData dataWithContentsOfURL:url];
    
    if ( urlData )
    {
        NSLog(@"Retrieved %d bytes of data: %@",urlData.length,[NSString stringWithUTF8String:[urlData bytes]]); // Output: Retrieved 786432 bytes of data: SQLite format 3
        // Write database to file
        [urlData writeToFile:filePath atomically:YES];
        
        // Fetch version ID from server
#ifdef Durbuy
        NSString *stringURL = @"http://www.***.**/app/durbuy_database_version_id.txt"; // ** = gemaskeerd.
#endif
#ifdef LaRoche
        NSString *stringURL = @"http://www.***.**/app/laroche_database_version_id.txt"; // ** = gemaskeerd.
#endif
        NSURL  *url = [NSURL URLWithString:stringURL];
        NSData *remoteMD5Data = [NSData dataWithContentsOfURL:url];
        NSString *remoteDatabaseMD5 = [NSString stringWithUTF8String:[remoteMD5Data bytes]];
        
        // Write ID to settings file
        filePath = [[NSBundle mainBundle] pathForResource:@"Settings" ofType:@"plist"];
        NSMutableDictionary *plistDict = [[NSMutableDictionary alloc] initWithContentsOfFile:filePath];
        [plistDict setObject:remoteDatabaseMD5 forKey:@"database_md5"];
        
        [plistDict writeToFile:filePath atomically:YES]; 
    } 
}
Deze code moet een database dowloaden van een internetsite en die lokaal opslaan (een ander bestand overschrijvend). Vervolgens moet de code een stuk text van dezelfde internetsite dowloaden en in Settings.plist opslaan. Deze code werkt precies zoals bedoeld in de iPhone simulator, maar op het echte apparaat wordt het bestand om de een of andere reden niet opgeslagen, en ook wordt de text niet opgeslagen. Is dit een verschil tussen de bestandsysteemen van iOS en MacOSX? Hoe kan ik het aanpassen zodat het wel werkt?


EDIT: Het werkte niet omdat ik naar de app bundle probeerde te schrijven!

Laatst gewijzigd door Werner291; 28 October 2012 om 21:30. Reden: Oplossing
Advertentie
Advertentie Gesponsorde links (verdwijnt na registratie)

  #2  
Oud 29 October 2012, 12:42
» iPhone 5 16GB (Wit) [FW: 8.1.2]  [Jailbreak: Nee]
» iPad mini Wi-Fi 16GB (Zwart) [FW: 8.1.2]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 27 October 2008
Locatie: Amsterdam
Berichten: 174
Standaard

Wat ben ik een spuit 11, las je edit niet

Je probleem zit in het feit dat je niet naar bestanden kan schrijven die in je app bundle zitten. dus alles in je [NSBundle mainBundle] zijn readonly.

Als je bestanden weg schrijft moet deze in de document directory staat:

Code:
/**
 Returns the URL to the application's Documents directory.
 */
- (NSString *)applicationDocumentsDirectory {
	
    return [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES) objectAtIndex:0];
}

Laatst gewijzigd door TUX2K; 29 October 2012 om 13:14.
  #3  
Oud 30 October 2012, 09:44
» iPhone 4 32GB (Zwart) [FW: 5.0]  [Jailbreak: Nee]
» iPad 3 Wi-Fi 16GB (Zwart) [FW: 5.1]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 14 October 2008
Locatie: Haarlem
Berichten: 348
Standaard

Citaat:
Oorspronkelijk geplaatst door TUX2K Bekijk bericht
Wat ben ik een spuit 11, las je edit niet
Maar je gaf wel een nuttige toevoeging aan dit draadje, je gaf namelijk het antwoord . Altijd handig voor anderen.
__________________
Leon
[iPhone- en Java ontwikkelaar]
Reageren


Er zijn 1 actieve gebruikers die momenteel deze discussie bekijken (0 leden en 1 gasten)

 
Discussietools
Weergave

Soortgelijke discussies

Discussie Auteur Forum Reacties Laatste bericht
Wel een .m4r bestand maar geen sync videologic iTunes 1 28 November 2009 11:50
gmail werkt wel op Wi-Fi maar niet op 3g dennisiphone Wi-Fi 0 1 November 2009 15:30
App store werkt wel maar safari niet Upodtouch iPhone Apps 2 17 October 2009 23:07
3.0: vind wel Wi-Fi maar werkt niet tommehh Wi-Fi 15 28 June 2009 19:37
Iphone gaat niet aan, maar word wel als usb apparaat ontdekt Drinkyoghurt Unlock [archief] 39 25 June 2008 13:31

Regels voor berichten
Je mag geen nieuwe discussies starten
Je mag niet reageren op berichten
Je mag geen bijlagen versturen
Je mag niet je berichten bewerken

BB code is Aan
Smileys zijn Aan
[IMG]-code is Aan
HTML-code is Uit
Trackbacks are Aan
Pingbacks are Aan
Refbacks are Uit



Alle tijden zijn GMT +2. Het is nu 16:11.