iOS在应用程序中打开附加文件。没有这样的文件或目录

iOS在应用程序中打开附加文件。没有这样的文件或目录,ios,swift,Ios,Swift,在我的iOS应用程序中,我希望用户能够导出和导入设置文件。 我现在正在尝试实现导入功能 我给自己发了一封带有设置文件的电子邮件(在Ubuntu中创建,扩展名为UTF8,如果需要的话) 我在pList中定义了文件扩展名(.inv),如下所示: <key>CFBundleDocumentTypes</key> <array> <dict> <key>CFBundleTypeIconFiles</key>

在我的iOS应用程序中,我希望用户能够导出和导入设置文件。 我现在正在尝试实现导入功能

我给自己发了一封带有设置文件的电子邮件(在Ubuntu中创建,扩展名为UTF8,如果需要的话)

我在pList中定义了文件扩展名(.inv),如下所示:

<key>CFBundleDocumentTypes</key>
<array>
    <dict>
        <key>CFBundleTypeIconFiles</key>
        <array/>
        <key>CFBundleTypeName</key>
        <string>Stratix Settings File</string>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>LSHandlerRank</key>
        <string>Owner</string>
        <key>LSItemContentTypes</key>
        <array>
            <string>com.invera.settings</string>
        </array>
    </dict>
</array>
<key>UTExportedTypeDeclarations</key>
<array>
    <dict>
        <key>UTTypeConformsTo</key>
        <array>
            <string>public.data</string>
        </array>
        <key>UTTypeDescription</key>
        <string>Stratix Settings File</string>
        <key>UTTypeIdentifier</key>
        <string>com.invera.settings</string>
        <key>UTTypeTagSpecification</key>
        <dict>
            <key>public.filename-extension</key>
            <string>inv</string>
        </dict>
    </dict>
</array>
let path = "" + (file?.filePathURL?.description)!
并在我的ViewController中创建了读取文件的方法:

    func readSettingsFile(filePath : String) {
    NSLog("File path : " + filePath)
    do{
        let content = try String(contentsOfFile: filePath, encoding: NSUTF8StringEncoding)
        NSLog(content)
    } catch let error as NSError {
        print(error)
    }
}
但当我试图读取该文件时,它表示该文件不存在:

File path : file:///private/var/mobile/Containers/Data/Application/E7076F5B-9131-4253-BAE7-0053CC872C2B/Documents/Inbox/settings-32.inv

Error Domain=NSCocoaErrorDomain Code=260 "The file “settings-32.inv” couldn’t
 be opened because there is no such file." UserInfo={
 NSFilePath=file:///private/var/mobile/Containers/Data/Application/E7076F5B-9131-4253-BAE7-0053CC872C2B/Documents/Inbox/settings-32.inv, 
 NSUnderlyingError=0x14ed7760 {Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory"}}

获取文件路径的代码不正确。替换如下所示的行:

<key>CFBundleDocumentTypes</key>
<array>
    <dict>
        <key>CFBundleTypeIconFiles</key>
        <array/>
        <key>CFBundleTypeName</key>
        <string>Stratix Settings File</string>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>LSHandlerRank</key>
        <string>Owner</string>
        <key>LSItemContentTypes</key>
        <array>
            <string>com.invera.settings</string>
        </array>
    </dict>
</array>
<key>UTExportedTypeDeclarations</key>
<array>
    <dict>
        <key>UTTypeConformsTo</key>
        <array>
            <string>public.data</string>
        </array>
        <key>UTTypeDescription</key>
        <string>Stratix Settings File</string>
        <key>UTTypeIdentifier</key>
        <string>com.invera.settings</string>
        <key>UTTypeTagSpecification</key>
        <dict>
            <key>public.filename-extension</key>
            <string>inv</string>
        </dict>
    </dict>
</array>
let path = "" + (file?.filePathURL?.description)!
与:

仅供参考-切勿将
说明
方法用于调试和记录以外的任何事情


免责声明-我不能流利地使用Swift,因此您可能需要使用
调整我的答案
在那里的某个地方。

获取文件路径的代码不正确。替换如下所示的行:

<key>CFBundleDocumentTypes</key>
<array>
    <dict>
        <key>CFBundleTypeIconFiles</key>
        <array/>
        <key>CFBundleTypeName</key>
        <string>Stratix Settings File</string>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>LSHandlerRank</key>
        <string>Owner</string>
        <key>LSItemContentTypes</key>
        <array>
            <string>com.invera.settings</string>
        </array>
    </dict>
</array>
<key>UTExportedTypeDeclarations</key>
<array>
    <dict>
        <key>UTTypeConformsTo</key>
        <array>
            <string>public.data</string>
        </array>
        <key>UTTypeDescription</key>
        <string>Stratix Settings File</string>
        <key>UTTypeIdentifier</key>
        <string>com.invera.settings</string>
        <key>UTTypeTagSpecification</key>
        <dict>
            <key>public.filename-extension</key>
            <string>inv</string>
        </dict>
    </dict>
</array>
let path = "" + (file?.filePathURL?.description)!
与:

仅供参考-切勿将
说明
方法用于调试和记录以外的任何事情


免责声明-我不能流利地使用Swift,因此您可能需要使用
调整我的答案
在那里的某个地方。

在这里!非常感谢。给你!非常感谢。