- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试序列化我的Cart对象,该对象中包含项目的NSMutableArray
,但得到:*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Invalid type in JSON write (Item)'
如果我了解这应该如何工作,则需要创建一个词典数组,以便NSJSONSerialization
正常工作。那不是我在下面做什么吗?
我的购物车:
@interface Cart : BaseObject
@property (nonatomic, strong) NSString *comp;
@property (nonatomic, strong) NSString *sono;
@property (nonatomic, strong) NSString *cust;
@property (nonatomic, strong) NSString *scus;
@property (nonatomic, strong) NSString *cnid;
@property (nonatomic, strong) NSString *dldt;
@property (nonatomic, strong) NSString *whse;
@property (nonatomic, strong) NSString *pono;
@property (nonatomic, strong) NSString *pon2;
@property (nonatomic, strong) NSString *emad;
@property (nonatomic, strong) NSString *pkin;
@property (nonatomic, strong) NSString *comt;
@property (nonatomic, strong) NSString *rtin;
@property (nonatomic, strong) NSString *lbfg;
@property (nonatomic, strong) NSString *containsOpenPriced;
@property (nonatomic, strong) NSString *totalProductAmount;
@property (nonatomic, strong) NSMutableArray *items;
@property (nonatomic) BOOL *isSubmitting;
@end
@implementation Cart
@synthesize comp;
@synthesize sono;
@synthesize cust;
@synthesize scus;
@synthesize cnid;
@synthesize dldt;
@synthesize whse;
@synthesize pono;
@synthesize pon2;
@synthesize emad;
@synthesize pkin;
@synthesize comt;
@synthesize rtin;
@synthesize lbfg;
@synthesize containsOpenPriced;
@synthesize totalProductAmount;
@synthesize items;
- (id) initWithDictionary:(NSDictionary *)dictionary {
self = [super init];
if (self) {
self.comp = dictionary[@"comp"];
self.sono = dictionary[@"sono"];
self.cust = dictionary[@"cust"];
self.scus = dictionary[@"scus"];
self.cnid = dictionary[@"cnid"];
self.dldt = dictionary[@"dldt"];
self.whse = dictionary[@"whse"];
self.pono = dictionary[@"pono"];
self.pon2 = dictionary[@"pon2"];
self.emad = dictionary[@"emad"];
self.pkin = dictionary[@"pkin"];
self.comt = dictionary[@"comt"];
self.rtin = dictionary[@"rtin"];
self.lbfg = dictionary[@"lbfg"];
self.containsOpenPriced = dictionary[@"containsOpenPriced"];
self.totalProductAmount = dictionary[@"totalProductAmount"];
NSArray *itemsArray = dictionary[@"items"];
NSMutableArray *itemsMutableArray = [[NSMutableArray alloc]init];
for (NSDictionary *itemDictionary in itemsArray) {
Item *item = [[Item alloc] initWithDictionary:itemDictionary];
[itemsMutableArray addObject:item];
}
self.items = itemsMutableArray;
}
return self;
}
@end
NSMutableArray *itemsToSerialize = [[NSMutableArray alloc] init];
for (Item *item in cart.items) {
NSMutableDictionary *itemDict = [[NSMutableDictionary alloc] init];
[itemDict setObject:item forKey:@"item"];
[itemsToSerialize addObject:item];
}
NSMutableDictionary *data = [@{
@"comp" : cart.comp,
@"rtin" : cart.rtin,
@"pono" : cart.pono,
@"pon2" : cart.pon2,
@"totalProductAmount" : totalProductAmount,
@"sono" : cart.sono,
@"emad" : cart.emad,
@"lbfg" : lbfg,
@"pkin" : cart.pkin,
@"containsOpenPriced" : containsOpenPriced,
@"cnid" : cart.cnid,
@"whse" : cart.whse,
@"scus" : cart.scus,
@"dldt" : cart.dldt,
@"cust" : cart.cust,
@"comt" : cart.comt,
@"items": itemsToSerialize
} mutableCopy];
NSString *command = @"shoppingCart.update";
NSMutableDictionary *request = [@{
@"command" : command,
@"comp" : cart.comp,
@"cnid" : sessionController.operator.cnid,
@"cust" : cart.cust,
@"data" : data
} mutableCopy];
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:request options:kNilOptions error:nil];
NSJSONSerialization
行。我想念什么?
最佳答案
这一行:[itemsToSerialize addObject:item];
应该是[itemsToSerialize addObject:itemDict];
。结果是您试图序列化项本身的数组,这会给您带来异常。
关于ios - 将自定义对象序列化为包含NSMutableArray的JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19459750/
出于好奇,我尝试了一些原型(prototype)制作,但似乎只允许在第一个位置使用子例程的原型(prototype) &。 当我写作时 sub test (&$$) { do_somethin
我需要开发一个类似于 Android Play 商店应用程序或类似 this app 的应用程序.我阅读了很多教程,发现几乎每个教程都有与 this one 类似的例子。 . 我已经开始使用我的应用程
考虑一个表示“事件之间的时间”的列: (5, 40, 3, 6, 0, 9, 0, 4, 5, 18, 2, 4, 3, 2) 我想将这些分组到 30 个桶中,但桶会重置。期望的结果: (0, 1,
我是一名优秀的程序员,十分优秀!