从FileManager获取app组的路径

我正在尝试更新我的WatchKit应用程序,我正常将NSKeyedArchiver文件保存到NSDocumentsDirectory。 通过更新到应用程序组,我需要将其存储在应用程序组文件夹中。 我遇到的问题是我无法弄清楚如何获取路径,而不是将其作为我正在寻找的文件引用。

现在设置它的方法是找到它将路径作为NSString的文件

/Users/ME/Library/Developer/CoreSimulator/Devices/43F/data/Containers/Data/Application/5E/Documents/fav 

但是当我存储到应用程序组时,无论我以哪种方式访问​​该文件夹,都会返回该文件夹

 file:///Users/ME/Library/Developer/CoreSimulator/Devices/43F/data/Containers/Data/Application/5E/Documents/fav 

获取共享组路径的最佳方法是什么,而不是让应用程序查找直接文件?

因此咖啡剥夺了我忘记了filemanager的.path。

 NSURL *fileManagerURL = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"group.com"]; NSString *tmpPath = [NSString stringWithFormat:@"%@", fileManagerURL.path]; NSString *finalPath = [NSString stringWithFormat:@"%@",[string stringByAppendingString:@"/Favourites2"]]; 

我遇到了同样的问题。 我正在完成将字符串构建到我的保存位置的整个过程,现在我正在切换到应用程序组并使用

 NSURL *fileManagerURL = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:groupID]; 

好吧,问题是,现在不是以“/ Users / yourname / Library …”开头的位置的字符串,而是“file:/// Users / yourname / Library …”

这就是我做的。 我创建了NSURL。 然后我在上面调用了absoluteString

 NSURL groupPath = [[fileManager containerURLForSecurityApplicationGroupIdentifier:groupID] absoluteString]; 

我现在有一个字符串,我需要去除前7个字符,然后我的旧代码工作得很好,除了现在而不是在Documents目录中,它在一个共享的应用程序组中,可以被我的旧代码访问和我新的watchkit扩展。

这是剥离前7个字符的代码(从0开始,索引6),你应该可以使用任何一种方法……

 NSString *newGroupPath = [groupPath substringFromIndex:6]; 

要么

 NSString *newGroupPath = [groupPath substringWithRange:NSMakeRange(6, [str length]-6)]; 

这只是从NSURL中创建的absoluteString中删除“file://”并返回旧的字符串路径“/ Users / YourName / Library / Developer / yada yada yada”

希望对你有所帮助,我花了4个小时搞清楚。

它似乎在模拟器上对我有用,我还没有在Watch上试过它。 但至少我的应用程序现在正如以前一样工作,只需将数据保存在共享应用程序组中。 (我有一个单身人员管理我的整个应用程序中的所有数据,我希望同样的单身人士为我的手表应用程序提供数据)。