bundle是一个目录,其中包含了程序会使用到的资源. 这些资源包含了如图像,声音,编译好的代码,nib文件(用户也会把bundle称为plug-in). 对应bundle,cocoa提供了类NSBundle.
我们的程序是一个bundle. 在Finder中,一个应用程序看上去和其他文件没有什么区别. 但是实际上它是一个包含了nib文件,编译代码,以及其他资源的目录. 我们把这个目录叫做程序的main bundle
bundle中的有些资源可以本地化.例如,对于foo.nib,我们可以有两个版本: 一个针对英语用户,一个针对法语用户. 在bundle中就会有两个子目录:English.lproj和French.lproj,我们把各自版本的foo.nib文件放到其中. 当程序需要加载foo.nib文件时,bundle会自动根据所设置的语言来加载. 我们会在16章再详细讨论本地化
通过使用下面的方法得到程序的main bundle
NSBundle *myBundle = [NSBundle mainBundle];
一般我们通过这种方法来得到bundle.如果你需要其他目录的资源,可以指定路径来取得bundle
NSBundle *goodBundle;
goodBundle = [NSBundle bundleWithPath:@"~/.myApp/Good.bundle"];
一旦我们有了NSBundle 对象,那么就可以访问其中的资源了
// Extension is optional
NSString *path = [goodBundle pathForImageResource:@"Mom"];
NSImage *momPhoto = [[NSImage alloc] initWithContentsOfFile:path];
bundle中可以包含一个库. 如果我们从库得到一个class, bundle会连接库,并查找该类:
Class newClass = [goodBundle classNamed:@"Rover"];
id newInstance = [[newClass alloc] init];
如果不知到class名,也可以通过查找主要类来取得
Class aClass = [goodBundle principalClass];
id anInstance = [[aClass alloc] init];
可以看到, NSBundle有很多的用途.在这章中, NSBundle负责(在后台)加载nib文件. 我们也可以不通过NSWindowController来加载nib文件, 直接使用NSBundle:
BOOL successful = [NSBundle loadNibNamed:@"About" owner:someObject];
注意噢, 我们指定了一个对象someObject作为nib的File's Owner
使用initWithContentsOfFile时,文件路径的写法 使用initWithContentsOfFile方法可以通过读取一个文件的内容来初始化对象。 但文件的路径应该怎么确定呢? 可以使用NSBundle的对象来获取。 例如当前程序所在目录下有个文件re.xml,我们要将该文件的内容做为NSData的数据源来初始化一个NSData对象,可以用下面的方法来实现:NSString *filePath = [[NSBundle mainBundle] pathForResouse:@"re" ofType:@"xml"];
NSData *data = [[NSData alloc] initWithContentsOfFile:filePath];
读取plist中的内容:NSString *dataPath = [[NSBundle mainBundle] pathForResource:@"Data" ofType:@"plist"]; self.data = [NSArray arrayWithContentsOfFile:dataPath];
删除本地文件
NSString * thePath=[self getUserDocumentDirectoryPath];
NSMutableString * fullPath=[[[NSMutableString alloc]init]autorelease];
[fullPath appendString:thePath];
NSString * idString=[idArray objectAtIndex:indexPath.row];
NSString * coverName=[NSString stringWithFormat:@"/%@.jpg",idString];
[fullPath appendString:coverName];
NSFileManager *defaultManager;
defaultManager = [NSFileManager defaultManager];
- (BOOL)removeItemAtPath:(NSString *)path error:(NSError **)error BOOL boolValue=[defaultManager removeItemAtPath: fullPath error: nil];
if (boolValue) {
NSLog(@"remove cover image ok");
}
- (NSString*)getUserDocumentDirectoryPath {
NSArray* array = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask, YES);
if([array count])
return [array objectAtIndex: 0];
else return @"";
}
转自:http://crespoxiao.blogcn.com/articles/iphone之nsbundle.html
分享到:
相关推荐
`NSBundle`是iOS和macOS开发中的核心组件之一,它代表了一个应用程序或动态库的资源容器。这篇关于`NSBundle`的详解将深入介绍其主要功能和使用方式。 首先,`NSBundle`对象通常用来管理和访问应用内的资源,如图片...
在本文中,我们将深入探讨如何使用C#语言读取和写入iPhone中的plist文件,以及如何构建相关的工程文件。 首先,理解.plist文件: .plist文件全称是Property List,它是Apple操作系统(包括iOS和macOS)中的一种标准...
AudioServicesCreateSystemSoundID((__bridge CFURLRef)[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"vibrate" ofType:@"aif"]], &vibrateSoundID); ``` 然后播放声音来模拟振动: ```objc...
"ios应用源码之一些iphone开源项目代码unicode 2018127"这个压缩包很可能包含了2018年12月7日之前的一些针对iPhone平台的iOS应用源代码,其中特别提到了“unicode”,这表明这些项目可能涉及到Unicode字符集的处理和...
在“iPhone游戏之旅资源1”中,我们主要探讨的是如何在iOS平台上开发一款游戏,特别是涉及到主菜单和关于界面的设计与实现。这是一个基础且至关重要的环节,因为它们是玩家首次接触游戏时的第一印象,同时也提供了...
这些资源在Xcode项目中管理,通过NSBundle对象加载到程序中。对于"麻将连连看"来说,麻将牌的图像、背景音乐以及按钮的图标等,都需要适配不同屏幕尺寸和分辨率,确保游戏在各种iPhone设备上都能正常显示和运行。 ...
NSString *appVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"]; NSLog(@"应用版本 --> %@", appVersion); ``` 这里`infoDictionary`方法返回了包含应用版本...
Objective-C作为苹果开发的主要语言之一,其历史和发展对于理解音乐播放器的实现至关重要。 Objective-C起源于1988年,由NeXT Software公司开发,并在1996年苹果收购NeXT后成为苹果操作系统的基础,即Cocoa框架。...
NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"soundFileName" ofType:@"mp3"]]; NSError *error; audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&...
这篇文章主要聚焦于iOS设备信息的获取方法,并特别强调了对iPhone XS Max和iPhone XR这两种型号的信息更新。 ### 一、获取iOS设备基本信息 1. **设备名称(deviceName)** - 获取方法:使用自定义的方法`get...
本文将深入探讨如何在iPhone应用中设置全局变量以及如何访问配置文件。 全局变量是在整个应用程序中都可以访问的变量,适用于存储那些在整个程序生命周期内都需要保持不变的数据。在Objective-C中,你可以通过以下...
Iphone的caf格式系统声音: 代码:NSString *path = [[NSBundle mainBundle] pathForResource:@"SIMToolkitPositiveACK" ofType:@"caf"]; AVAudioPlayer* theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:...
NSURL *videoURL = [[NSBundle mainBundle] URLForResource:@"ceshi" withExtension:@"mp4"]; self.player = [AVPlayer playerWithURL:videoURL]; self.playerLayer = [AVPlayerLayer playerLayerWithPlayer:self...
从本地资源加载图片,可以使用`NSBundle`的`resourcePath`获取资源路径,然后创建一个`NSURL`对象,再加载HTML字符串,将图片路径插入其中。例如,加载名为"0001.png"的图片。 5. **在WebView中加载并缩放图片**:...
该标题"IOS应用源码之iphone开发技巧UI篇之主题切换 类似weico BEThemeDemo.zip"表明这是一个关于iOS应用开发的源码项目,专注于UI(用户界面)部分,特别是主题切换的功能。它提到了“类似weico”,意味着这个项目...
iPhone播放本地视频的代码主要涉及到多媒体框架,如AVFoundation框架,这是苹果官方推荐用于处理音频和视频的核心框架。本源码示例将深入探讨如何利用AVFoundation框架实现本地视频播放功能。 首先,我们需要了解...
7. **本地化和国际化**:对于一个面向全球用户的订票系统,源码可能涉及到多语言支持,使用NSBundle和Localizable.strings文件进行字符串本地化。 8. **支付集成**:支付功能通常涉及第三方支付平台如Apple Pay或...
### iPhone开发常用代码知识点 #### 一、更改Cell选中背景 在iOS开发过程中,我们经常需要自定义UITableViewCell(单元格)的样式,包括改变选中状态时的背景颜色或图像。下面是一段示例代码: ```objective-c ...
本篇文章将深入探讨如何使用AVAudioPlayer类在iPhone上实现音频播放,并结合提供的VoicePlay.h和VoicePlay.mm文件进行分析。 首先,我们要了解AVAudioPlayer的基本用法。创建AVAudioPlayer对象时,通常需要提供音频...
本DEMO旨在教授如何在iPhone和iPad上读取、写入和保存plist文件。下面我们将详细探讨这些操作。 1. **读取plist文件** 要读取plist文件,首先需要获取文件路径。在iOS中,文件通常存储在沙盒的不同目录下,如...