我的函数中的NSJSONSerialization返回错误

时间:2014-03-25 16:25:29

标签: ios ios7

我有一个看起来像这样的函数:

-(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值?我没看到什么?非常感谢。

1 个答案:

答案 0 :(得分:3)

是的,这是因为UIImageNSJSONSerialization仅适用于NSStringNSNumberNSArrayNSDictionaryNSNull。有关详细信息,请参阅NSJSONSerialization文档。

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