在以下代码中找不到NSException

时间:2014-12-26 07:52:28

标签: objective-c core-data ios8

我正在使用try catch来查找错误,但无法得到确切的原因。

for(NSMutableDictionary *dict in subArray)
{

            Video *vid = [[Video alloc]init];
            [vid initwithDictionary:dict ];
        @try
        {
            [self.VideoArray addObject:vid];
        }
        @catch (NSException *exception) {
            NSLog(@"%@", exception);
        }

}
即使在应用try-catch之后,

也找不到异常的原因,而视频模型文件中的代码如下所示。

 -(id)initwithDictionary:(NSMutableDictionary*)dic{

if(self)
{

self.urlVedio1=[dic objectForKey:@"UrlVedio1"];
self.type_id=[dic objectForKey:@"type_id"];
}
return self;
}
 #import <Foundation/Foundation.h>
 #import <CoreData/CoreData.h>


 @interface Video : NSManagedObject

 @property (nonatomic, retain) NSString * urlVedio1;
 @property (nonatomic, retain) NSString * type_id;

 @end

2 个答案:

答案 0 :(得分:1)

您忘记在- (id)initWithDictionary:方法

中初始化对象
- (id)initWithDictionary:(NSDictionary *)dict
{
  self = [super init];
  if (self)
  {
    self.urlVedio1=[dic objectForKey:@"UrlVedio1"];
    self.type_id=[dic objectForKey:@"type_id"];
  }
  return self;
}

答案 1 :(得分:1)

你不能初始化像

这样的对象

视频*视频= [[视频分配]初始化];

NSManagedObject的文档声明专用的初始化程序是:

initWithEntity:insertIntoManagedObjectContext:

这就是失败的原因。 错误:CoreData:错误:无法在NSManagedObject类'Video'

上调用指定的初始值设定项

所以,请使用

AppDelegate appdele =(AppDelegate )[UIApplication sharedApplication] .delegate;     for(NSMutableDictionary *在subArray中的dict)     {

    NSEntityDescription *VideoEntity = [NSEntityDescription
                                        entityForName:@"Video"
                                        inManagedObjectContext:appdele.managedObjectContext];
    Video *vid =(Video*) [[NSManagedObject alloc]
                                    initWithEntity:VideoEntity
                                    insertIntoManagedObjectContext:appdele.managedObjectContext];

    [vid initwithDictionary:dict ];
    @try
    {
        [VideoArray addObject:vid];
    }
    @catch (NSException *exception) {
        NSLog(@"%@", exception);
    }


    NSLog(@"%@", VideoArray);

}