使用GROUP APP在两个目标中共享文件

时间:2014-06-18 09:27:05

标签: ios iphone xcode nsfilemanager ios8

- (void) readTheFile{

    NSError *error;
    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSString *path = [self getTheFilePath];

    if (![fileManager fileExistsAtPath: path])
    {
        NSString *bundle = [[NSBundle mainBundle] pathForResource:@"setting" ofType:@"plist"];

        [fileManager copyItemAtPath:bundle toPath: path error:&error];
    }
}

- (NSString *)getTheFilePath{

    NSURL *url =  [[NSFileManager defaultManager]     containerURLForSecurityApplicationGroupIdentifier:@"com.group.test"];
    NSString *path = [url.absoluteString stringByAppendingPathComponent:@"setting.plist"]; 
    path = [path stringByReplacingOccurrencesOfString:@"file:" withString:@""];
    return path;
}

大家好,我有一个混乱的问题 我在一个项目中有两个目标,一个是扩展目标 所以我想在两个目标中共享一些plist文件。所以我成功地为两个目标创建了组内的App App 我的想法是我在一个目标中创建了plist文件,而其他扩展应用程序需要检查相同的位置(上面的代码)并检查文件是否存在。如果不存在,请创建新的plist文件 我在模拟器上测试了一切都很好 但是当我在设备上运行时,所有奇怪的事情都会出现 当我读取文件时,getTheFilePath会给出正确的路径,但是当我检查文件是否存在时。它显示NO。 但实际上我已经从第一个目标创建了文件 所以程序继续并从Bundle复制文件并粘贴到路径中 但是我得到了关于文件已经存在的错误。

Error Domain=NSCocoaErrorDomain Code=516 "The operation couldn’t be completed. (Cocoa error 516.)" 
"The operation couldn’t be completed. File exists"  

有时会自动重启设备。为什么?

请帮助我,我使用xCode 6测试版并在iOS8 iPhone5s上测试

2 个答案:

答案 0 :(得分:0)

我最近一直在研究应用程序组,特别是iOS 8即将推出,现在已经遇到过这个问题了几次。事实证明,这是Xcode当前测试版中的一个错误。我相信你现在已经知道了,但是对于那些没有更新但仍然遇到同样问题的人来说应该解决它。

答案 1 :(得分:0)

您要检索的网址如下所示:file:///var/mobile/Containers/... 所以也许你应该尝试使用这样的东西,这对我有用:

NSString *path = [url.absoluteString stringByReplacingOccurrencesOfString:@"file://" withString:@""];