gpt4 book ai didi

objective-c - 为什么我的包忽略了它的 info.plist?

转载 作者:行者123 更新时间:2023-12-03 17:42:55 25 4
gpt4 key购买 nike

我正在尝试将一组资源捆绑到一个包中,然后它们通过 NSBundle 从代码中访问它们。

到目前为止,我可以很好地访问 bundle 中的资源,但我无法让 NSBundle 实例从 bundle 的 Info.plist 文件中获取任何元数据。

奇怪的是,我的第一次尝试成功了,并且正确地获取了元数据,但从那时起我就无法复制此行为,并且 bundle 始终为bundleIdentifier或infoDictionary中的其他项目返回null。

我已将代码简化为以下测试用例:

NSString *pathToTestBundle = [[NSBundle mainBundle] pathForResource:@"test" 
ofType:@"testBundle"];
NSLog(@"path to Test Bundle: %@", pathToTestBundle);

NSBundle *testBundle = [NSBundle bundleWithPath: pathToTestBundle];
NSLog(@"testBundle: %@", testBundle);

NSString *identifier = [testBundle bundleIdentifier];
NSLog(@"testBundle identifier: %@", identifier);

NSURL *testResourceURL = [testBundle URLForResource:@"vanGroup"
withExtension:@"png"];
NSLog(@"testBundle test resource: %@", testResourceURL);

NSImage *testImage = [[NSImage alloc] initByReferencingURL:testResourceURL];
[imageView setImage:testImage];

NSLog(@"%@", [testBundle infoDictionary]);

这给出了:(编辑行长度)

path to Test Bundle: /.../BundleTester.app/Contents/Resources/test.testBundle
testBundle: NSBundle </../BundleTester.app/Contents/Resources/test.testBundle>
(not yet loaded)
testBundle identifier: (null)
testBundle test resource: file://.../BundleTester.app/Contents/Resources/test.testBundle/Resources/vanGroup.png
BundleTester[45083:707] {
NSBundleInitialPath = "/Users/diggory/Library/Developer/Xcode/DerivedData/BundleTester-hcbsnhudsdfzlyggjbvlkdbrtxrw/Build/Products/Debug/BundleTester.app/Contents/Resources/test.testBundle";
NSBundleResolvedPath = "/Users/diggory/Library/Developer/Xcode/DerivedData/BundleTester-hcbsnhudsdfzlyggjbvlkdbrtxrw/Build/Products/Debug/BundleTester.app/Contents/Resources/test.testBundle";
}

在我的 Xcode 项目中,测试包被添加为文件夹引用,并具有以下结构:

test.testBundle
Info.plist
Resources
vanGroup.png

图像资源已正确加载,但 plist 中的值被忽略。

plist如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleIdentifier</key>
<string>com.monkeyfood.testbundle</string>
<key>badger</key>
<string>Bodger</string>
</dict>
</plist>

我错过了什么吗?我做错了什么?
非常感谢。

最佳答案

“Contents”文件夹丢失。

关于objective-c - 为什么我的包忽略了它的 info.plist?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7204598/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com