Problem: Konvertieren Sie ein Objekt in iOS nach json

Ich habe eine Hauptentitätsklasse mit dem Namen "Store" wie:

Store.h: -

#import <Foundation/Foundation.h>
#import "SignIn.h"

@interface Store : NSObject

@property (nonatomic, retain) NSString *storeId;
@property (nonatomic, retain) NSString *storeProfileId;
@property (nonatomic, retain) NSString *storeName;
@property (nonatomic, retain) NSString *storeRegion;

@property (nonatomic, retain) SignIn *signIn;

@end

Store.m: -

#import "Store.h"

@implementation Store

@synthesize storeId, storeProfileId, storeName, storeRegion, signIn;

- (id) initWithCoder: (NSCoder *)coder
{
    self = [[Store alloc] init];
    if (self != nil)
    {
        self.storeId = [coder decodeObjectForKey:@"storeId"];
        self.storeProfileId = [coder decodeObjectForKey:@"storeProfileId"];
        self.storeName = [coder decodeObjectForKey:@"storeName"];
        self.storeRegion = [coder decodeObjectForKey:@"storeRegion"];

        self.signIn = [coder decodeObjectForKey:@"signIn"];
    }
    return self;
}

- (void)encodeWithCoder: (NSCoder *)coder
{
    [coder encodeObject:storeId forKey:@"storeId"];
    [coder encodeObject:storeProfileId forKey:@"storeProfileId"];
    [coder encodeObject:storeName forKey:@"storeName"];
    [coder encodeObject:storeRegion forKey:@"storeRegion"];

    [coder encodeObject:signIn forKey:@"signIn"];
}

@end

Hier in der Store-Klasse nehme ich einen weiteren Klassennamen "Anmelden", der einige andere Attribute enthält.

SignIn.h: -

#import <Foundation/Foundation.h>

@interface SignIn : NSObject

@property (nonatomic, retain) NSString *inTime;
@property (nonatomic, retain) NSString *outTime;
@property (nonatomic, retain) NSString *isStatus;

@end

SignIn.m: -

#import "SignIn.h"

@implementation SignIn
@synthesize inTime, outTime, isStatus;

- (id) initWithCoder: (NSCoder *)coder
{
    self = [[SignIn alloc] init];
    if (self != nil)
    {
        self.inTime = [coder decodeObjectForKey:@"inTime"];
        self.outTime = [coder decodeObjectForKey:@"outTime"];
        self.isStatus = [coder decodeObjectForKey:@"isStatus"];
    }
    return self;
}

- (void)encodeWithCoder: (NSCoder *)coder
{
    [coder encodeObject:inTime forKey:@"inTime"];
    [coder encodeObject:outTime forKey:@"outTime"];
    [coder encodeObject:isStatus forKey:@"isStatus"];
}

@end

Jetzt muss ich dieses Speicherobjekt auf Bediener bekanntgeben. Also erstelle ich ein Wörterbuch mit folgendem Code:

  NSMutableArray *storeJSONArray=[NSMutableArray array];
    for (Store *store in array1) {

        NSMutableDictionary *storeJSON=[NSMutableDictionary dictionary];

        [storeJSON setValue:store.storeId forKey:@"storeId"];
        [storeJSON setValue:store.storeProfileId forKey:@"storeProfileId"];
        [storeJSON setValue:store.storeName forKey:@"storeName"];
        [storeJSON setValue:store.storeRegion forKey:@"storeRegion"];


        //Sign In
        [storeJSON setValue:store.signIn.inTime forKey:@"inTime"];
        [storeJSON setValue:store.signIn.outTime forKey:@"outTime"];
        [storeJSON setValue:store.signIn.isStatus forKey:@"isStatus"];

        [storeJSONArray addObject:storeJSON];
    }

    NSMutableDictionary *dictionnary = [NSMutableDictionary dictionary];
    [dictionnary setObject:storeJSONArray forKey:@"StoreRequest"];

    NSError *error = nil;
    NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dictionnary
                                                       options:kNilOptions
                                                         error:&error];

    NSString *urlString =@"http://...................php";

    NSURL *url = [NSURL URLWithString:urlString];
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];

    [request setHTTPMethod:@"POST"];

    [request setHTTPBody:jsonData];
    NSURLResponse *response = NULL;
    NSError *requestError = NULL;

    NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&requestError];

    NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding] ;

Aber ich erhalte kein korrektes JSON. Bitte überprüfen Sie meinen Code und lassen Sie mich wissen, wo mein Fehler liegt. Danke im Voraus.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage