2012-11-05 55 views
3

我在嘗試使用MagicalRecord「保存」時遇到問題。我的代碼:MagicalRecord保存原因EXC_BAD_ACCESS


- (void) findInternetObject { 
    [InternetObjectFinder runBlockSuccess:^(NSManagedObject *obj) { 
     obj.attr1 = @"abc"; 
     [[NSManagedObjectContext MR_defaultContext] MR_saveErrorHandler:^(NSError *error) { 
       NSLog(@"failed to save attr1, Error: %@, %@", error.localizedDescription, error.userInfo); 
     }]; 
    }]; 
} 

其中物鏡是在方法創建 「runBlockSuccess」 方法 「InternetObjectFinder」 級:

[的NSManagedObjectContext MR_defaultContext] MR_saveErrorHandler


InternetObject *obj = [InternetObject MR_createEntity]; 

在線應用崩潰

出錯:EXC_BAD_ACCESS

任何幫助表示讚賞。

回答

0

這似乎是你的嵌套塊內的範圍問題, 你嘗試寫這樣的事情(未測試):如果proble堅持這也許詳細的回答可以幫助你

- (void) findInternetObject { 
    NSManagedObjectContext *defaultContext = [NSManagedObjectContext MR_defaultContext]; 
    [InternetObjectFinder runBlockSuccess:^(NSManagedObject *obj) { 
     obj.attr1 = @"abc"; 
     [defaultContext MR_saveErrorHandler:^(NSError *error) { 
       NSLog(@"failed to save attr1, Error: %@, %@", error.localizedDescription, error.userInfo); 
     }]; 
    }]; 
} 

How do I avoid capturing self in blocks when implementing an API?

0

你應該在主線程中調用save方法。您的代碼看起來是將核心數據保存到塊中。如果這不起作用,你可以使用下面的代碼來保存。

MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext) { 

} completion:^(BOOL success, NSError *error) { 
    if(success){ 
     NSLog(@"success"); 
    } 
}]; 
相關問題