我試圖將一組資源捆綁到一個捆綁包中,並且他們通過NSBundle從代碼訪問它們。爲什麼我的包忽略了它的info.plist?
到目前爲止,我可以很好地從捆綁包中獲取資源,但是我無法讓NSBundle實例從捆綁的Info.plist文件中獲取任何元數據。
奇怪的是,我的第一次嘗試工作,並正確地獲取元數據,但自那時以來,我一直無法複製這種行爲,並且捆綁包總是返回null爲bundleIdentifier或infoDictionary中的其他項目。
我已代碼減少到下面的測試情況:
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
圖像資源加載正確,但val在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>
我缺少的東西?我究竟做錯了什麼?
非常感謝。
我從來沒有使用捆綁。但是,並不是每個軟件包都包含「內容」文件夾嗎?爲什麼你使用包? – lbrndnr
輝煌 - 我忘記了內容文件夾。它現在有效,非常感謝。 – Diggory
添加了一個答案,所以它的官方:) – lbrndnr