2016-07-05 14 views
0

Ich bin neu in Realm. Im Moment habe ich eine einfache App, die Nachrichten aus einer API zieht. Der erste View-Controller zeigt eine Liste der Artikeltitel an, der zweite View-Controller zeigt den aus der tableView ausgewählten Artikel in einer webView.Speichern von Daten aus der API in Realm

Ich möchte Realm verwenden, um die Daten von der API zu speichern, so dass die tableView Ergebnisse zeigt, auch wenn es keine Internetverbindung gibt.

Ich sehe die Tutorials, die Mantle verwenden, aber ich versuche, es ohne zu tun.

Dies ist, was ich bisher versucht habe, aber meine Verwendung von valueForKey stürzte die App, also habe ich es auskommentiert.

- (void)startParsing 
{ 
    NSXMLParser *xmlparser = [[NSXMLParser alloc] initWithContentsOfURL:[NSURL URLWithString:@"http://images.apple.com/main/rss/hotnews/hotnews.rss#sthash.TyhRD7Zy.dpuf"]]; 
    [xmlparser setDelegate:self]; 
    [xmlparser parse]; 
    if (_marrXMLDataCollection.count != 0) { 

     Data *dataRealm = [[Data alloc] init]; 
     dataRealm.titleR = @"Temporary title"; 
//  dataRealm.titleR = [_marrXMLDataCollection valueForKey:@"title"]; 

     RLMRealm *realm = [RLMRealm defaultRealm]; 
     [realm beginWriteTransaction]; 
     [realm addObject:dataRealm]; 
     [realm commitWriteTransaction]; 

     [self.collectionView reloadData]; 
    } 
} 

Alle Ideen wären toll, danke!

Hier weitere Informationen, falls erforderlich:

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict; 
{ 
    if ([elementName isEqualToString:@"rss"]) { 
     _marrXMLDataCollection = [[NSMutableArray alloc] init]; 
    } 
    if ([elementName isEqualToString:@"item"]) { 
     _mdictXMLPartCollection = [[NSMutableDictionary alloc] init]; 
    } 
} 
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string; 
{ 
    if (!_mstrXMLStringCollection) { 
     _mstrXMLStringCollection = [[NSMutableString alloc] initWithString:string]; 
    } 
    else { 
     [_mstrXMLStringCollection appendString:string]; 
    } 
} 
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName; 
{ 
    if ([elementName isEqualToString:@"title"] 
     || [elementName isEqualToString:@"pubDate"] 
     || [elementName isEqualToString:@"link"] 

     ) { 
     [_mdictXMLPartCollection setObject:_mstrXMLStringCollection forKey:elementName]; 
    } 
    if ([elementName isEqualToString:@"item"]) { 
     [_marrXMLDataCollection addObject:_mdictXMLPartCollection]; 
    } 
    _mstrXMLStringCollection = nil; 
} 
+0

Was ist Ihre Frage? – Randy

+0

@Randy ist das möglich, ohne Mantle zu benutzen, oder ist es zu schwer ohne Mantle und alles, was von dort im Grunde folgt. Vielen Dank! – SRMR

+0

@Randy oder wenn das, was ich mache, sogar Sinn macht, um Realm zu brauchen? – SRMR

Antwort

1

Ich vermute, was du gesehen hast this article on the Realm website war Realm und Mantel über die Integration.

Es ist absolut nicht notwendig, Realm mit Parsing-Bibliotheken von Drittanbietern zu verwenden. Der Punkt von Mantle in diesem Artikel bestand darin, es einfacher zu machen, eine JSON-Antwort von einer REST-API in ein Modellobjekt zu konvertieren (einschließlich Dingen wie Datumsstrings in NSDate), die dann an ein Realm-Objekt übergeben werden könnten.

Ihr Realm-Code sieht hier korrekt aus (Angenommen, Date wurde ordnungsgemäß zu einer Unterklasse von RLMObject gemacht), so scheint es, dass etwas mit Ihrem XML-Parsing-Code nicht stimmt. NSXMLParser ist eine recht knifflige Klasse, mit der Sie arbeiten müssen, da Sie Ihr XML-Datendiagramm sequenziell durch Delegatenrückrufe erstellen müssen.

Für den Zweck der Analyse von XML, das von einer API bedient wird (dh es wäre von Natur aus klein, diskrete Blöcke. NSXMLParser ist für lächerlich große XML-Datensätze ausgelegt.), Würde ich stattdessen empfehlen, eine andere XML-Bibliothek zu verwenden durch und verarbeitet das gesamte XML-Set, bevor es an Sie übergeben wird. Ich habe TBXML in Versand Apps zuvor verwendet, und es gibt a Ray Wenderlich article, die mehr von ihnen diskutiert (Zugegeben, es ist ziemlich veraltet an dieser Stelle).

Wenn jemand anderes von neueren XML-Bibliotheken weiß, die empfohlen werden, bitte klingeln. :)

+0

Große Antwort! Danke, dass Sie mich durch ein paar verschiedene Optionen auf diesem – SRMR

Verwandte Themen