ios - 如何访问存储在 Root.plist 设置包中的信息 (Swift)

标签 ios xcode swift

昨天我做了一些搜索,但我真的找不到任何能满意地回答我的问题的东西。我正在帮助我的一个 friend ,他在 Settings.app 中为应用程序存储了他的部分信息,设置包中的 Root.plist 文件保存了这些信息。我之前没有这方面的工作经验,所以我不确定如何获得这些信息。我尝试了 let bundle = NSBundle.mainBundle().pathforResource("Root", ofType: "plist") 但这只是返回了 nil。那么访问这些信息的正确方法是什么?

最佳答案

我正在使用 Xcode 13.4.1 和 Swift 5。以下是在主包中获取 Root.plist 的代码:

let settingsBundle = Bundle.main.path(forResource: "Settings", ofType: "bundle")
let url = URL(fileURLWithPath: settingsBundle!)
let rootPlist = url.appendingPathComponent("Root.plist").path
let dic = NSDictionary(contentsOfFile: rootPlist)
print(dic ?? "")

第一步是获取主包“Settings.bundle”的路径。接下来,为此路径构建一个 URL。最后一步是将“Root.plist”添加到 url。我的打印可以获取我的Root.plist内容的内容。

这是基于此发现的另一种用法。在我的项目中,Settings.bundle 中定义了一些用户默认设置。这些用户默认设置名称可以本地化。本地化字符串文件在此 Settings.bundle 中,与项目或主包路径中的本地化字符串不同。这是获取本地化用户默认设置名称的案例:“允许批量删除”。

let settingsBundle = Bundle.main.path(
  forResource: "Settings",
  ofType: "bundle")
let bdl = Bundle(path: settingsBundle!)
let s = NSLocalizedString(
  "rkAllowBulkDelete", 
  tableName: "Root",
  bundle: bdl!, 
  comment: "Localized name for setting \"Allow bulk delete\"")
  print(s)

这是 en.lproj\Root.string 文件中 rkAllowBulkDelete 的定义:

...
"rkAllowBulkDelete" = "Allow bulk deletion";
...

关于ios - 如何访问存储在 Root.plist 设置包中的信息 (Swift),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31610552/

相关文章:

ios - 如何判断模拟器中运行的设备?

ios - WKWebView.loading 返回无法识别的选择器

ios - 与 UIActivityViewController 共享 PDF 文件

ios - Xcode - 可执行文件仅在 RELEASE 模式下使用无效权利进行签名

ios - 应用程序的 iCloud 文档目录未出现在文件应用程序的 iCloud 目录中

iphone - 从 iPhone 应用程序发推文

ios - 当用户在 ios 中处于离线状态时在 quickblox 中获取消息

ios - Swift 中的自定义 map

ios - 模糊的 UIImageView 尺寸问题

iphone - 4 英寸视网膜 iPhone 模拟器中页眉和页脚的剩余空间