2016-05-12 4 views
-1

Ich erstelle eine JB-Optimierung mit Theos in meinem Gerät.Wie liest man ein Plist-Wörterbuch und speichert die Schlüssel (nicht die Werte) in Array-Strings eines anderen Plist?

Ich mag einen plist dict lesen wie:

ASNPrefs.plist 

    <?xml version="1.0" encoding="UTF-8"?> 
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
    <plist version="1.0"> 

     <dict> 
      <key>ASNcenterEnabled</key> 
      <false/> 
      <key>ASNcornerEnabled</key> 
      <false/> 
      <key>ASNnoCenterEnabled</key> 
      <false/> 
      <key>ASNdepthSizeEnabled</key> 
      <false/> 
     </dict> 
     </plist> 

und schreibe nur die Schlüssel als einen Array in einen anderen plist wie:

ASNkeys.plist 

    <?xml version="1.0" encoding="UTF-8"?> 
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
    <plist version="1.0"> 

     <dict> 
      <key>ASNkeys</key> 
      <array> 
       <string>ASNcenterEnabled</string> 
       <string>ASNcornerEnabled</string> 
       <string>ASNnoCenterEnabled</string> 
       <string>ASNdepthSizeEnabled</string> 
      </array> 
     </dict> 
    </plist> 

ich einen Knopf mit dieser Aktion erstellt habe , aber es passiert nichts:

- DEFINED AT BEGINNING OF .MM: 


#define prefs @"/User/Library/Preferences/ASNPrefs.plist" 
#define asnKeysPath @"/User/Documents/asnKeys.plist" 
#define asnKeysDict [[NSDictionary dictionaryWithContentsOfFile:asnKeysPath] objectForKey:@"keys"] 



- IN THE IMPLEMENTATION: 


    -(void)ASNkeys { 
     NSDictionary *asnPrefs = [NSDictionary dictionaryWithContentsOfFile:prefs]; 
     NSArray *allKeys = [prefs allKeys]; 

    [allKeys writeToFile:asnKeysDict atomically:YES]; 
     } 

Thank you!

+0

Ich weiß nicht, wie ich damit umgehen soll ... Vorschläge? Vielen Dank! – Olivier

+0

Ok! Entschuldigung ... einen Moment .. – Olivier

Antwort

0

Endlich !!

Nach vielen Änderungen ... Vielen Dank, dass Sie CRD !!

NSString *arrayPath; 
NSString *dictPath; 
NSString *origPath; 

// Get path to documents directory 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 

      if ([paths count] > 0) { 

       origPath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"com.maat.asnPrefs.plist"]; 

       NSDictionary *dictOrig = [NSDictionary dictionaryWithContentsOfFile:origPath]; 

       NSArray *ASNKeys = [dictOrig allKeys]; //ForObject:@"true"]; 

       NSDictionary *dictionary = @{@"ASNKeys" : allKeys}; 

       // Path to save array data 
       arrayPath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"array.out"]; 

       // Path to save dictionary 
       dictPath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"asnKeys.plist"]; 

       // Write array 
       [asnKeys writeToFile:arrayPath atomically:YES]; 

       // Write dictionary 
       [dictionary writeToFile:dictPath atomically:YES]; 
} 
0

Als Ihr plist ist eine Wörterbuch Verwendung dictionaryWithContentsOfFile: von NSDictionary (statt arrayWithContentsOfFile: von NSArray). Sobald Sie das Wörterbuch haben, können Sie die allKeys Methode verwenden, um ein Array der Schlüssel zu erhalten, und dann können Sie dieses Array zu einem PLIST schreiben.

HTH

+0

Ich werde es später versuchen ... Jetzt werde ich meine Kinder in der Schule verlassen ... Vielen Dank für Ihre Antwort! – Olivier

+0

Ich habe gestern so oft versucht ... und ich kann nicht herausfinden, wie ich es lösen kann. Ich bearbeite den Beitrag mit neuem Code ... – Olivier

+0

Mir ist nicht aufgefallen, dass du vor dem Editieren in dein App-Bundle schreiben wolltest, das ist nicht erlaubt. Nach der Bearbeitung übergeben Sie einen Dateipfad an 'pathForResource', das ist falsch. Sie sollten Apples [Dateisystem-Grundlagen] (https://developer.apple.com/library/ios/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/FileSystemOverview/FileSystemOverview.html) lesen, wo iOS-Apps Dateien speichern können. Verwenden Sie den Debugger, gehen Sie durch Ihren Code und untersuchen Sie den Wert jeder Variablen? HTH – CRD

Verwandte Themen