2017-07-18 4 views
0

Okay, ich versuche, meine Update zwickt Bündel auf den Wert des NSMutableArray, valididentifiers, die mit den Benutzern ausgewählten App-Kennungen wie com.apple.mobilesafari, wenn der Benutzer die Safari App innerhalb des Präferenz Bündels ausgewählt für meine zwicken bevölkert ist. Jedoch versuche ich jetzt, den plist zu aktualisieren, der die unterstützten Bündel mit dem folgenden Code zählt, jedoch erkennt es nur den Filter Schlüssel, wenn ich zu dem Bundles Schlüssel aktualisieren möchte. Ich weiß, dass es nur die Filter als gültigen Schlüssel durch Protokollierung bundlesplistallKeys Attribut erkennt und im Syslog beobachten.So aktualisieren Sie die Plist-Datei?

Also meine Frage ist, wie aktualisiere ich speziell die Bundles Abschnitt in der unten gezeigten Plattform?

test.plist Dateistruktur:

<?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>Filter</key> 
     <dict> 
     <key>Bundles</key> 
     <array> 
      <string>com.apple.mobilesafari</string> 
      <string>com.apple.springboard</string> 
     </array> 
     </dict> 
</dict> 
</plist> 

Mein Code:

NSMutableDictionary *bundlesplist = [NSMutableDictionary dictionaryWithContentsOfFile:@"/Library/MobileSubstrate/DynamicLibraries/test.plist"]; 
NSLog(@"%@", bundlesplist); 
NSLog(@"%@", [bundlesplist allKeys]); 

[bundlesplist setObject:valididentifiers forKey:@"Bundles"]; 
[bundlesplist writeToFile:@"/Library/MobileSubstrate/DynamicLibraries/test.plist" atomically:NO]; 

Syslog Ausgang Für AllKeys

2017-07-18 20:25:28.627: (
    Filter 
) 

Ich bin mir nicht sicher, ob ich das falsch mache oder nur dumm bin, aber jegliche Hilfe wäre sehr willkommen. Vielen Dank Tom

Antwort

0

Idealerweise sollten Sie in der Lage sein, den Wert zu setzen gerade mit:

[bundlesplist setObject:valididentifiers forKeyPath:@"Filter.Bundles"]; 

jedoch das Filter Wörterbuch ist wahrscheinlich unveränderlich.

Daher empfehle ich nur tun:

NSMutableDictionary *filter = [bundlesplist[@"Filter"] mutableCopy]; 
filter[@"Bundles"] = valididentifiers; 
bundlesplist[@"Filter"] = filter; 
+0

Cheers, Ihre Empfehlung hat super funktioniert! – Tom

Verwandte Themen