在 App-Group 文件夹中创建领域文件在 WatchOS(WatchKit 扩展)下不起作用

Posted

技术标签:

【中文标题】在 App-Group 文件夹中创建领域文件在 WatchOS(WatchKit 扩展)下不起作用【英文标题】:creation of realm file in App-Group Folder does not work under WatchOS (WatchKit Extension) 【发布时间】:2015-09-30 10:50:52 【问题描述】:

以下代码适用于 ios-8.x / Swift-1.2 / WatchKit-1.0

    // create Realm_DB-File in shared App-Groups Folder
    let directory: NSURL = NSFileManager.defaultManager().containerURLForSecurityApplicationGroupIdentifier(AppConstants.APP_GROUP_IDENTIFIER_KEY)!
    let realmPath = directory.path!.stringByAppendingPathComponent(AppConstants.REALM_FILENAME_KEY)
    playerRealm = Realm.init(path: realmPath)

但在 iOS-9.0.1 / Swift-2.0 / WatchOS-2.0 下不起作用

两条错误信息是:

1.) 'stringByAppendingPatchComponent' 不可用:在 NSURL 上使用 URLByAppendingPathComponent 代替

2.) call 可以抛出,但没有标记'try',错误不处理

任何帮助表示赞赏!

【问题讨论】:

【参考方案1】:

要解决您的第一个问题,您需要强制转换:

directory.path as NSString

因为路径返回为 String,而在 Swift 中不提供 stringByAppendingPathComponent 方法。

其次,Swift 2.0 有新的错误处理,所以可以抛出错误的方法被标记为throws。然后,这些方法要求您在调用之前添加try。请参阅 Apple 的文档:Swift Error Handling

如果您知道该路径可以保证工作,则要禁用错误处理,您可以简单地编写:

playerRealm = try! Realm(path: realmPath)

【讨论】:

以上是关于在 App-Group 文件夹中创建领域文件在 WatchOS(WatchKit 扩展)下不起作用的主要内容,如果未能解决你的问题,请参考以下文章

在领域中创建对对象的引用的正确方法

在特定目录中创建一个零字节文件

PHP在与脚本相同的目录中创建文件

Ruby - 在内存中创建文件

如何在 Python 中创建多个嵌套文件夹?

在文件夹中创建10个文本,以数字给他们命名。