Ios 获取核心数据中文件的路径
是否可以获取存储在核心数据中的文件的路径,或者只能提取文件本身?我需要核心数据中存储为NSData属性的文件的路径,而不是数据库本身。一些iOS功能通常要求NSURL,而不是文件本身,我还没有弄清楚如何将其与核心数据结合起来。这就是获得相关NSURL的方法:Ios 获取核心数据中文件的路径,ios,core-data,path,Ios,Core Data,Path,是否可以获取存储在核心数据中的文件的路径,或者只能提取文件本身?我需要核心数据中存储为NSData属性的文件的路径,而不是数据库本身。一些iOS功能通常要求NSURL,而不是文件本身,我还没有弄清楚如何将其与核心数据结合起来。这就是获得相关NSURL的方法: NSFileManager *fileManager = [NSFileManager defaultManager]; NSURL *documentsDirectory = [[fileManager URLsForDirectory:
NSFileManager *fileManager = [NSFileManager defaultManager];
NSURL *documentsDirectory = [[fileManager URLsForDirectory:NSDocumentDirectory
inDomains:NSUserDomainMask] firstObject];
NSString *documentName = @"YOUR_DATABASE_NAME";
NSURL *url = [documentsDirectory URLByAppendingPathComponent:documentName];
要从更宏观的角度来看,这通常是您设置UIManagedDocument以处理核心数据的方式:
NSFileManager *fileManager = [NSFileManager defaultManager];
NSURL *documentsDirectory = [[fileManager URLsForDirectory:NSDocumentDirectory
inDomains:NSUserDomainMask] firstObject];
NSString *documentName = @"YOUR_DATABASE_NAME";
NSURL *url = [documentsDirectory URLByAppendingPathComponent:documentName];
self.document = [[UIManagedDocument alloc] initWithFileURL:url];
BOOL fileExists = [fileManager fileExistsAtPath:[url path]];
if (fileExists) {
[self.document openWithCompletionHandler:^(BOOL success) {
if (success) {
self.context = self.document.managedObjectContext;
// Post notification so others can gather the document and context
[[NSNotificationCenter defaultCenter] postNotificationName:@"DatabaseReady"
object:self];
}
if (!success) NSLog(@"couldn't open file at %@", url);
}];
} else {
[self.document saveToURL:url
forSaveOperation:UIDocumentSaveForCreating
completionHandler:^(BOOL success) {
if (success) {
self.context = self.document.managedObjectContext;
// Post notification so others can gather the document and context
[[NSNotificationCenter defaultCenter] postNotificationName:@"DatabaseReady"
object:self];
}
if (!success) NSLog(@"couldn't open file at %@", url);
}];
}
如果使用SQLite,则数据库中没有“文件”。数据库是一个文件
如果要在数据库中存储二进制数据,则无法直接访问其下的文件(这甚至假设您使用外部存储作为选项)
如果您希望直接访问SQLite数据库中核心数据下的某些内容,则需要自己将其写入另一个文件。谢谢,但这只提供了数据库的路径,对吗?我在数据库中查找一个文件,换句话说,就是数据库中某个属性的路径。我能得到的最接近的方法是使用
nameOfManagedObject.objectID.URIRepresentation
获取它所包含的对象的路径。更新第一篇文章,使其更加清晰。