Frage AFNetworking und jSON


Ich werde die JSON-Antwort von einem Web-Service API folgen. Ich möchte Produktdaten aus dem JSON extrahieren. Ich möchte dies auch mit AFNetworking implementieren.

 {"products": [
    {
      "product_id": "1170",
      "name": "zzzz",
      "sort_order": 0,
      "brand": "zzzas",
      "product_category_id": "1090",
      "location_ids": [
        "1078"
      ],
      "icon_url": "http://zzzzz.com/media/2502/zzzz.png",
      "icon_date": "Wed, 07 Nov 2012 14:03:47 GMT",
      "thumbnail_url": "http://zzzz.com/media/2591/zzdfs.png",
      "thumbnail_date": "Wed, 07 Nov 2012 14:04:02 GMT"
    },
    {
      "product_id": "1126",
      "name": "ddddd",
      "sort_order": 1,
      "brand": "dddsas",
      "product_category_id": "1110",
      "location_ids": [
        "1095"
      ],
      "icon_url": "http://zzzzz.com/media/2507/ddddd.png",
      "icon_date": "Wed, 07 Nov 2012 14:03:48 GMT",
      "thumbnail_url": "http://zzzzz.com/media/2596/sssds.png",
      "thumbnail_date": "Wed, 07 Nov 2012 14:04:05 GMT"
    }
]}

Kann jemand einen Weg vorschlagen, dies zu tun?.mir, wie die Dinge gemacht werden.


15
2017-11-20 13:05


Ursprung


Antworten:


NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"link"]];
AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request 
    success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
        NSDictionary *jsonDict = (NSDictionary *) JSON;
        NSArray *products = [jsonDict objectForKey:@"products"];
        [products enumerateObjectsUsingBlock:^(id obj,NSUInteger idx, BOOL *stop){
            NSString *productIconUrl = [obj objectForKey:@"icon_url"];
        }];

    } failure:^(NSURLRequest *request, NSHTTPURLResponse *response,
        NSError *error, id JSON) {
            NSLog(@"Request Failure Because %@",[error userInfo]); 
    }
];

[operation start];

Versuche dies.

Update 1: Sie können dies versuchen https://github.com/SSamanta/SSRestClient

Update 2: https://github.com/SSamanta/SSHTTPClient (Mit Swift)

Verfügbarer Pod:  pod 'SSHTTPClient', '~>1.2.2'


37
2017-11-20 13:34



Wenn Sie AFNetworking 3.0 verwenden, AFJSONRequestOperation existiert nicht mehr, du musst verwenden AFHTTPSessionManager :

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
[manager GET:@"http://example.com/resources.json" parameters:nil progress:nil success:^(NSURLSessionTask *task, id responseObject) {
    NSLog(@"JSON: %@", responseObject);
} failure:^(NSURLSessionTask *operation, NSError *error) {
    NSLog(@"Error: %@", error);
}];

12
2018-01-06 20:50



Um JSON mit AFNetworking zu analysieren, erstellen Sie einfach eine Unterklasse und fügen während der Initialisierung Folgendes hinzu.

[self registerHTTPOperationClass:[AFJSONRequestOperation class]];

Dann eine Methode aufrufen wie GET:parameters:completion: wird den Completion Block mit einem aufrufen NSDictionary als die response Parameter (vorausgesetzt, der JSON ist gültig).

Um die Bilder herunterzuladen, gehen Sie davon aus, dass Sie sie anzeigen möchten UIImageView + AFNetworking.


4
2017-11-20 13:31



Wenn Sie gerade anfangen, würde ich empfehlen, zu verwenden RestKit für diese Aufgabe (es nutzt AFNetworking). Siehe ein Beispiel Hier.


3
2017-11-20 13:20



Bitte überprüfen Sie das Beispiel von AFNetworking https://github.com/AFNetworking/AFNetworking/tree/master/Beispiel

Zum Herunterladen von Bildern kann EGOCache & EGOImageLoading eine gute Wahl sein https://github.com/enormego/EGOImageLoading


1
2017-11-20 13:39



Benutzen JSONModell JSON in Objekt zu analysieren.


0
2017-12-13 06:50



Um AFNetworking ausführen zu können, müssen Sie zuerst "CocoaPods" installieren. Was ist das? CocoaPods ist ein Abhängigkeitsmanager für Objective-C, der die Installation von Drittanbieter-Bibliotheken ermöglicht als AFNetworking viel schneller und sicherer. Es wird als Ruby Gem zur Verfügung gestellt, das Sie folgendermaßen installieren können:

Öffnen Sie das Terminal und führen Sie die folgenden Befehle aus:

sudo gem install cocoapods -V

Sei geduldig. Dieser Befehl kann einige Zeit dauern, bis Sie fertig sind. Die Option "-V" liefert Ihnen detaillierte Daten zu den Vorgängen.

Als nächstes führen wir aus:

pod setup

Welche richtet unsere CocoaPods Installation ein.

Jetzt müssen wir eine PodFile erstellen, die als unsere Konfigurationsdatei für CocoaPods dient.

Zurück zum Terminal und wir schreiben die folgenden Befehle:

touch Podfile
open -e Podfile

Der erste Befehl erstellt eine Datei namens "Podfile" mit dem Unix-Touch-Editor. Die zweite Zeile öffnet diese neu erstellte Datei zur Bearbeitung. Sie sollten jetzt ein leeres TextEdit-Fenster geöffnet sehen. Jetzt fügen wir folgendes in diese Datei ein:

platform :ios, '7.0'
pod "AFNetworking", "~> 2.0"

Jetzt ist es an der Zeit, unsere Cocoa-Arbeitsumgebung einzurichten. WICHTIG: Bitte vergewissern Sie sich, dass Sie Ihr Verzeichnis mit Ihrem Terminal im XCODE PROJECT 'CURRENT DIRECTORY mit dem Befehl' cd 'im Terminal ändern. Beispiel:

cd /user/xcode/myproject

Sobald Sie sicher sind, dass Sie sich im richtigen Verzeichnis befinden, führen Sie den folgenden Terminal-Befehl aus:

pod setup

Und dann installieren wir die Abhängigkeiten zu unserem Projekt, indem wir schreiben:

pod install

Nun, das ist eine wichtige Anmerkung: Da Sie versuchen, ein Projekt zu installieren, das sich zuvor nicht in Ihrem aktuellen Xcode-Projekt befand, müssen Sie einen Arbeitsbereich für Ihr aktuelles Xcode-Projekt erstellen (falls Sie dies noch nicht getan haben). Um einen Arbeitsbereich für Ihr Xcode-Projekt zu erstellen, gehen Sie folgendermaßen vor:

File > Save Workspace

Wenn Sie fertig sind, navigieren Sie zum Verzeichnis Ihrer Xcode-Arbeitsbereichsdatei und führen Sie den folgenden Befehl aus:

open YourProjectName.xcworkspace

Jetzt können Sie einfach "importieren" am Anfang jeder Ihrer Dateien verwenden, um auf die integrierten API-Funktionen von AFNetworking zuzugreifen.


0
2017-07-28 13:52