2014-03-25 24 views
0

我有一个功能,看起来像这样:NSJSONSerialization在我的函数返回一个错误

[0]动画* 0x8d5e100 0x08d5e100

-(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与正确的对象进来 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年3月25日” 0x08fb49a0

_mvRating __NSCFString * @” PG-13“0x08fc4920

_mvSyn __NSCFString * @”来自梦工厂的影片“送货人”,亲切的未成年人大卫·沃兹尼亚克的故事,当他发现他的世俗生活颠倒了,通过他二十年前提出的精子捐献,他培养了533名儿童。对于被怀孕的女朋友拒绝的暴民债务,大卫在533名二十五岁的人中有142人想要知道捐助者的身份时,遭遇了一场官司。当大卫努力决定是否应该透露自己的真实身份时,他开始了一段旅程,导致他不仅发现了他的真实自我,而且还发现了他可能成为的父亲。 (c)中迪斯尼” 0x08fadd00

[1]短片* 0x8fda800 0x08fda800

[2]短片* 0x8d68720 0x08d68720

但在断点产生 “将writeToFile” 方法(从jsonData对象)返回这个:由于未捕获异常'NSInvalidArgumentException'而终止应用程序,原因:'JSON写入中的无效类型(Movie)

是因为UIImage的值吗?我没有看到?非常感谢。

回答

3

是的,这是因为UIImageNSJSONSerialization仅适用于NSString,NSNumber,NSArray,NSDictionaryNSNull。有关完整的详细信息,请参阅NSJSONSerialization文档。

如果要包含图像,必须首先将其转换为NSData,可能使用UIImagePNGRepresentationUIImageJPEGRepresentation

+0

谢谢你汤姆 – Nactus

相关问题