【问题标题】:Getting The XML Text Of A .xib File获取 .xib 文件的 XML 文本
【发布时间】:2012-03-10 10:26:13
【问题描述】:

我知道 .xib 文件实际上是 .xml 文件(这主要是因为我可以重命名它们的扩展名并在文本编辑和破折号中打开它们),所以理论上,可以将 xib 打开为 xml 和在应用程序中解析它。我查看了示例应用程序的构建设置,发现 xib 没有编译,而是复制捆绑资源。听起来不错,对吧?但是当我尝试使用这些方法获取它们的文本时,这些文件给了我(空)字符串:

 NSString *string = [[NSBundle mainBundle]pathForResource:@"Empty" ofType:@"xib"];
    NSString *xmlString = [[NSString stringWithContentsOfFile:string encoding:NSUTF8StringEncoding error:nil] retain];
    NSLog(@"%@", xmlString);
    [textView setText:xmlString];

xmlStringstring 的 NSLog(空)。所以我想用另一个 Copy Bundle Resource 试试,所以我把 string 改成了这个:

NSString *string = [[NSBundle mainBundle]pathForResource:@"InfoPlist" ofType:@"strings"];

它记录了一个完美的文件路径!但是,xmlString 仍然记录(空)。

然后,我尝试获取错误代码,结果如下:

The operation couldn’t be completed. (Cocoa error 258.)

这让我觉得在幕后使用 .xib 文件进行了一些额外的编译(我在某处读到它们被编译器转换为 nib),这使得它们无法读取或无法访问。但据我所知,有一些应用程序(Interface 是一个很好的例子)可以读取和写入 .xib 文件。

那么,谁能帮我获取 .xib 文件的 xml 文件?

【问题讨论】:

  • 您确定 Interface 读取和/或导出 xib 文件吗?
  • 这是他们网站上吹捧的功能。
  • 好吧,我真的不应该问这个问题 :) 即使他们这样做了,他们也会操纵 xml 的 xib 文件。
  • 你知道吗,我才意识到没有xib导入功能!他们正在处理纯 XML,然后将其包含在 .xib 文件格式中。谢谢,谢谢。

标签: objective-c ios xml nsstring xib


【解决方案1】:

其实xib文件是编译成nib文件的。在编译后的 .app 上使用 Show Package Contents,您会看到没有 xib 文件,而是 nib 文件。

编辑看起来 nib 文件格式是一种专有格式。但我不确定。

形成苹果documentation:

原始格式使用扩展名为 .nib 的文件。这是一种专有的二进制格式,用于表示 Interface Builder 用户界面对象和连接。

Edit 2 似乎有一些option 阻止Xcode 将xib 文件编译成nib 文件。但是我仍然不确定该怎么做,实际结果是什么。

Edit 3 我在 Xcode 上试过了。当我将 Flatten Complied Xib files 设置为 No 时,我仍然在二进制文件中获得了 nib 文件,但这次它们没有被压缩。在这些 nib 文件中有一个 xml 格式的文件 designtime.nib。

【讨论】:

  • 好的,从那个得到可可错误 261。笔尖采用什么编码方式?
  • @CodaFi - 您可以编译应用程序并将 nib 文件保存为 xml 格式:请参阅我编辑的答案。
猜你喜欢
  • 1970-01-01
  • 2014-08-10
  • 2023-01-23
  • 2015-10-02
  • 1970-01-01
  • 2011-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多