当设备被locking时,将文件加载到今日分机中

在我的今天扩展与我的设备解锁,这一行代码按预期工作,从图像path返回数据:

let imageData = NSData(contentsOfFile: path) 

但是,当我的设备被locking密码,它返回零。 设备locking时,有没有办法访问文件系统中的图像? 我可以很好地访问UserDefaults,但不能访问共享组的目录中的文件。 这里是我如何创buildpath,调用imagePath ,正确填充我期望在这两种情况下的path:

 func rootFilePath() -> String? { let manager = NSFileManager() let containerURL = manager.containerURLForSecurityApplicationGroupIdentifier(GROUP_ID) if let unwrappedURL = containerURL { return unwrappedURL.path } else { return nil } } func imagePath() -> String? { let rootPath = rootFilePath() if let uPath = rootPath { return "\(uPath)/\(imageId).png" } else { return nil } } 

我只是想出来了! 您需要相应地设置文件权限:

 NSFileManager *fm = [[NSFileManager alloc] init]; NSDictionary *attribs = @{NSFileProtectionKey : NSFileProtectionNone}; NSError *unprotectError = nil; BOOL unprotectSuccess = [fm setAttributes:attribs ofItemAtPath:[containerURL path] error:&unprotectError]; if (!unprotectSuccess) { NSLog(@"Unable to remove protection from file! %@", unprotectError); } 

在很多情况下,您通常不会想要这样做,但是因为信息是要从locking屏幕上查看的,所以我可以删除文件保护。