我有一个看起来像这样的函数:
-(void)writeArrayOnFile {
NSArray* converterArray = [[NSArray alloc] initWithArray:[self swContainer]];
NSURL *url = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
url = [url URLByAppendingPathComponent:@"saved.json"];
NSError *e = nil;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:converterArray options:0 error:&e];
if (jsonData) {
[jsonData writeToFile:url.path atomically:YES];
}
NSLog(@"%@", jsonData);
}
在断点处,converterArray带有正确的对象:
[0]电影* 0x8d5e100 0x08d5e100
NSObject NSObject
_swBtnValue BOOL YES
_thSmallLink UIImage * 0x8fdcd80 0x08fdcd80
_thLargeLink __NSCFString * @“http://content9.flixster.com/movie/11/17/45/11174563_ori.jpg”0x08fb9530
_mvName __NSCFString * @“送货员”0x08fc48e0
_dvdReleaseDate __NSCFString * @“2014-03-25”0x08fb49a0
_mvRating __NSCFString * @“PG-13”0x08fc4920
_mvSyn __NSCFString * @“来自梦工厂的图片来自”送货人“,这是一个和蔼可亲的未成年人大卫沃兹尼亚克的故事,当他发现他通过二十年前的精子捐赠生育了533名儿童时,他的世俗生活被颠倒了。对于暴徒的负债,被他怀孕的女友拒绝了,大卫在533名二十多岁的人中有142人因为想知道捐赠者的身份而遭到诉讼时,事情看起来不会更糟。大卫挣扎着决定无论他是否应该透露自己的真实身份,他都会踏上一段旅程,不仅要发现他的真实自我,还要发现他可能成为的父亲。(c)迪士尼“0x08fadd00
[1]电影* 0x8fda800 0x08fda800
[2]电影* 0x8d68720 0x08d68720
但是在断点上,“writeToFile”方法(来自jsonData对象)返回:由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'JSON写入中的无效类型(电影)
是否因为UIImage值?我没看到什么?非常感谢。
答案 0 :(得分:3)
是的,这是因为UIImage
。 NSJSONSerialization
仅适用于NSString
,NSNumber
,NSArray
,NSDictionary
和NSNull
。有关详细信息,请参阅NSJSONSerialization
文档。
如果要包含图片,则必须先将其转换为NSData
,可能使用UIImagePNGRepresentation
或UIImageJPEGRepresentation
。