Core Data Macos 应用程序和与 OS X 10.7 的兼容性
Posted
技术标签:
【中文标题】Core Data Macos 应用程序和与 OS X 10.7 的兼容性【英文标题】:Core Data Mac OS X app and compatibilty with OS X 10.7 【发布时间】:2012-10-28 23:09:15 【问题描述】:您好,我已经使用 Core Data 和 OS X 10.8 创建了一个简单应用程序,它是 xcode 创建的简单模板,但是如果我将 Base SDK 更改为 10.7 xcode 在 App Controller 中的此方法上会出现此错误:
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
if (_persistentStoreCoordinator)
return _persistentStoreCoordinator;
NSManagedObjectModel *mom = [self managedObjectModel];
if (!mom)
NSLog(@"%@:%@ No model to generate a store from", [self class], NSStringFromSelector(_cmd));
return nil;
NSFileManager *fileManager = [NSFileManager defaultManager];
NSURL *applicationFilesDirectory = [self applicationFilesDirectory];
NSError *error = nil;
NSDictionary *properties = [applicationFilesDirectory resourceValuesForKeys:@[NSURLIsDirectoryKey] error:&error];
if (!properties)
BOOL ok = NO;
if ([error code] == NSFileReadNoSuchFileError)
ok = [fileManager createDirectoryAtPath:[applicationFilesDirectory path] withIntermediateDirectories:YES attributes:nil error:&error];
if (!ok)
[[NSApplication sharedApplication] presentError:error];
return nil;
else
if (![properties[NSURLIsDirectoryKey] boolValue])
// Customize and localize this error.
NSString *failureDescription = [NSString stringWithFormat:@"Expected a folder to store application data, found a file (%@).", [applicationFilesDirectory path]];
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
[dict setValue:failureDescription forKey:NSLocalizedDescriptionKey];
error = [NSError errorWithDomain:@"YOUR_ERROR_DOMAIN" code:101 userInfo:dict];
[[NSApplication sharedApplication] presentError:error];
return nil;
NSURL *url = [applicationFilesDirectory URLByAppendingPathComponent:@"SimpleApp.storedata"];
NSPersistentStoreCoordinator *coordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:mom];
if (![coordinator addPersistentStoreWithType:NSXMLStoreType configuration:nil URL:url options:nil error:&error])
[[NSApplication sharedApplication] presentError:error];
return nil;
_persistentStoreCoordinator = coordinator;
return _persistentStoreCoordinator;
我收到此错误:
我该怎么办?
【问题讨论】:
【参考方案1】:这实际上不是 Core Data 的问题,但这与 object subscripting 有关。为了使这些文字正常工作,您的 SDK 至少需要为 OS X 10.8 或 ios 6。
如果没有其他方法,您仍然可以使用下标并将 SDK 保持在 10.7,方法是向 NSObject 上实现所需方法的类别添加存根标头。你可以看到一个这样的例子here。不过,我建议您将 SDK 保持在 10.8 上。
【讨论】:
那么我该如何修复它以在 10.7 上运行? 可以的。这是语法糖,与操作系统无关。以上是关于Core Data Macos 应用程序和与 OS X 10.7 的兼容性的主要内容,如果未能解决你的问题,请参考以下文章
Core Data Mac OS X 基于文档的应用程序中的 NSArrayController 类与实体模式