从FileManager获取app组的路径

时间:2015-04-05 06:30:15

标签: ios objective-c apple-watch

我正在尝试为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

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

2 个答案:

答案 0 :(得分:4)

因此咖啡被剥夺了我忘记了文件管理员的.path。

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

答案 1 :(得分:0)

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

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上试过它。但至少我的应用程序现在正如以前那样工作,只是将数据保存在共享应用程序组中。 (我有一个管理我的应用程序中所有数据的单例,我想要同样的单例来为我的手表应用程序提供数据。)