从addPersistentStoreWithType中抑制核心数据错误:

时间:2015-07-08 15:24:47

标签: objective-c macos core-data

我有自定义NSIncrementalStore。如果添加它时出现问题,则错误会自动记录到控制台。 问题是options可能包含我显然不希望登录到控制台的敏感数据。

我认为Core Data记录了错误,我并不需要,因为我已经有了一个可以正确使用的NSError参数。

例如:

@implementation FakeStore

- (BOOL)loadMetadata:(NSError **)error {
  *error = [NSError errorWithDomain:@"faildomain" code:531 userInfo:nil];
  return NO;
}

@end

尝试添加商店:

  [NSPersistentStoreCoordinator registerStoreClass:[FakeStore class] forStoreType:@"FakeStore"];
  ...
  NSDictionary *options = @{@"option": @"sensitivedata"};
  NSError *error;
  [persistentCoordinator addPersistentStoreWithType:@"FakeStore" configuration:nil URL:storeUrl
                                            options:options error:&error];

自动记录到控制台的错误:

CoreData: error: -addPersistentStoreWithType:FakeStore configuration:(null) URL:<URL> options:{ option = sensitivedata; } ... returned error Error Domain=faildomain Code=531 "The operation couldn’t be completed. (faildomain error 531.)" with userInfo dictionary { }

解决方法是,敏感数据不应传递到我的商店的options,但不一定非必要。

无论如何都要压制这个错误吗?

1 个答案:

答案 0 :(得分:0)

你不能把它关掉但是你应该可以重定向它。 Bummer ..需要私有API ..是你的选择吗?

https://www.google.de/search?client=safari&rls=en&q=_NSSetLogCStringFunction&ie=UTF-8&oe=UTF-8&gfe_rd=cr&ei=uUKdVe-QN4nj8wfl9AE

尝试了第一个链接,发现它仍然有效!

如果私有API不是选项:否(并且Id提交错误:D)