2016-04-12 8 views
1

Ich bin neu hier. Hoffe jemand kann mir helfen!Wie schreibe ich eine Zeichenfolge in einem Array von .plist-Datei

Ich erstelle eine Optimierung, in der ich AppList (Ryan Petrich) hinzugefügt und arbeiten, so habe ich in meiner Präferenz bündeln Sie eine Linkzelle mit allen Anwendungen und ein Ein-/Ausschalten für jede App.

Wenn ich einige davon einschalte, speichert es einen <key>ALvalue-com.some.app</key> und einen Wert in den Einstellungen .plist.

Ich versuche, herauszufinden, wie kann ich diese Struktur von „Schlüssel“ „boolValue“ so sein ändern:

<dict> 
    <key>AL-hd</key> 
    <array> 
     <string>com.apple.AppStore</string> 
     <string>com.apple.gamecenter</string> 
     <string>com.apple.stocks</string> 
    </array> 
</dict> 
</plist> 

Statt dessen

AL-hd.plist Datei

<dict> 
    <key>ALvalue-com.apple.AppStore</key> 
    <true/> 
    <key>ALvalue-com.apple.gamecenter</key> 
    <true/> 
    <key>ALvalue-com.apple.stocks</key> 
    <true/> 
</dict> 
</plist> 

das ist mein aPPLIST .plist, die die Einstellungsdatei AL-hd.plist spart:

<dict> 
     <key>cell</key> 
     <string>PSLinkCell</string> 
     <key>bundle</key> 
     <string>AppList</string> 
     <key>isController</key> 
     <string>1</string> 
     <key>label</key> 
     <string>Show apps</string> 
     <key>icon</key> 
     <string>Favorites.png</string> 
     <key>ALAllowsSelection</key> 
     <string>1</string> 
     <key>ALChangeNotification</key> 
     <string>com.your.companyChanged</string> 
     <key>ALSectionDescriptors</key> 
     <array> 
      <dict> 
       <key>footer-title</key> 
       <string>Check what apps you want to show up</string> 
       <key>items</key> 
       <array/> 
      </dict> 
      <dict> 
       <key>cell-class-name</key> 
       <string>ALCheckCell</string> 
       <key>icon-size</key> 
       <string>29</string> 
       <key>suppress-hidden-apps</key> 
       <string>1</string> 
       <key>title</key> 
       <string>All Applications</string> 
      </dict> 
     </array> 
     <key>ALSettingsKeyPrefix</key> 
     <string>ALvalue-</string> 
     <key>ALSettingsPath</key> 
     <string>/var/mobile/Library/Preferences/AL-hd.plist</string> 
    </dict> 

Ich suche viel und versuche hundert Dinge.

Dank!

Eine Sache, die ich versuchte, war, eine zweite .plist zu erstellen und später zu versuchen, diese Schlüssel zu kopieren und sie wie eine Zeichenfolge in die zweite Datei einzufügen. Und eine Taste in der Präferenz Bündel mit dieser Aktion in .mm Datei hinzuzufügen (ohne Glück):

- (void)save 
{ 
    NSString *bundleID = [[NSBundle mainBundle] bundleIdentifier]; 

    // Either this or whatever works from link after this 
    NSString *prefPath = @"/User/Library/Preferences/com.your.company.plist"; 
    NSString *showPath = @"/User/Library/Preferences/AL-hd.plist"; 
    NSMutableDictionary *plistDict = [[NSMutableDictionary alloc] initWithContentsOfFile:prefPath];  
    NSMutableArray *show = [[NSMutableArray alloc] initWithContentsOfFile:showPath];  
    if ([[plistDict objectForKey:bundleID] boolValue]) { 
      [Show addObject:bundleID]; 
    } 
} 

Für mich ist nicht relevant, wenn ich den Vorzug Bündel .plist verwenden oder ein zweites verwenden und kopieren diese Linien in der Art, wie ich brauche.

+0

Es ist unklar, was dein Problem ist. Sie müssen Ihren Code zumindest zeigen und erklären, wie es anders als das, was Sie benötigen, funktioniert, dann kann Ihnen vielleicht jemand helfen. Bearbeiten Sie Ihre Frage selbst, versuchen Sie nicht, das Material in Kommentaren hinzuzufügen. – CRD

+0

Sie möchten die 2 Plist-Dateien zu einem zusammenführen? – phi

+0

Nein, ich habe die Antwort bearbeitet, um klarer zu sein ... Sorry von meinem Englisch! – Olivier

Antwort

0

So.

  1. Erstellen Sie eine neue .plist-Datei und öffnen Sie sie als Eigenschaftsliste.

  2. Klicken Sie auf +, um eine neue Eigenschaft in der Informationseigenschaftsliste zu erstellen.

  3. Benennen Sie Ihre Eigenschaft, z. B. "Text" als Typ "Array".

  4. Im oben erstellten Array fügen Sie einen neuen Eintrag hinzu und geben Sie für jeden Eintrag Ihren Text ein.

  5. Jetzt in Ihrer Ansicht Controller-Klasse, müssen Sie dies tun.

    //ViewController.h 
    
        @property (nonatomic,strong)NSArray *plistDataArr; 
    
        //ViewController.m 
    
    
    -(NSArray*) plistDataArr 
        { 
        if(! _plistDataArr) 
        { 
         NSString *filePath = [[NSBundle mainBundle]pathForResource:@"YOUR Plist file name" ofType:@"plist"]; 
        _plistDataArr = [NSArray arrayWithContentsOfFile:filePath]; 
        } 
        return _plistDataArr; 
    
        } 
    
        //viewDidLoad 
    
        NSMutableArray *tempArr=[NSMutableArray arrayWithArray:self. _plistDataArr]; 
    
+0

Vielen Dank! Aber ich habe keine .m und .h Dateien. Nur .mm. Ich weiß noch nicht, wie man diese Dateien in .mm umwandelt. Das passiert mir, alle Beispiele, die ich gegründet habe, sind wie deine ... – Olivier

+0

Plz upvote meine Antwort, so dass andere auch davon profitieren könnten. –