`
muyu114
  • 浏览: 135652 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

Iphone之NSBundle

 
阅读更多
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
分享到:
评论

相关推荐

    iphone NSBundle 详解

    `NSBundle`是iOS和macOS开发中的核心组件之一,它代表了一个应用程序或动态库的资源容器。这篇关于`NSBundle`的详解将深入介绍其主要功能和使用方式。 首先,`NSBundle`对象通常用来管理和访问应用内的资源,如图片...

    iphone-plist-net-C#

    在本文中,我们将深入探讨如何使用C#语言读取和写入iPhone中的plist文件,以及如何构建相关的工程文件。 首先,理解.plist文件: .plist文件全称是Property List,它是Apple操作系统(包括iOS和macOS)中的一种标准...

    iphone应用之微信摇一摇效果

    AudioServicesCreateSystemSoundID((__bridge CFURLRef)[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"vibrate" ofType:@"aif"]], &vibrateSoundID); ``` 然后播放声音来模拟振动: ```objc...

    ios应用源码之一些iphone开源项目代码unicode 2018127

    "ios应用源码之一些iphone开源项目代码unicode 2018127"这个压缩包很可能包含了2018年12月7日之前的一些针对iPhone平台的iOS应用源代码,其中特别提到了“unicode”,这表明这些项目可能涉及到Unicode字符集的处理和...

    iphone游戏之旅资源1

    在“iPhone游戏之旅资源1”中,我们主要探讨的是如何在iOS平台上开发一款游戏,特别是涉及到主菜单和关于界面的设计与实现。这是一个基础且至关重要的环节,因为它们是玩家首次接触游戏时的第一印象,同时也提供了...

    mj.zip_iphone mahjong_iphone连连看源_mahjong_objective_麻将

    这些资源在Xcode项目中管理,通过NSBundle对象加载到程序中。对于"麻将连连看"来说,麻将牌的图像、背景音乐以及按钮的图标等,都需要适配不同屏幕尺寸和分辨率,确保游戏在各种iPhone设备上都能正常显示和运行。 ...

    ios设备信息获取(已更新iPhone xs max 、 iPhone xr).pdf

    NSString *appVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"]; NSLog(@"应用版本 --> %@", appVersion); ``` 这里`infoDictionary`方法返回了包含应用版本...

    iPhone手机音乐播放器的实现PPT教案.pptx

    Objective-C作为苹果开发的主要语言之一,其历史和发展对于理解音乐播放器的实现至关重要。 Objective-C起源于1988年,由NeXT Software公司开发,并在1996年苹果收购NeXT后成为苹果操作系统的基础,即Cocoa框架。...

    iPhone播放声音例子

    NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"soundFileName" ofType:@"mp3"]]; NSError *error; audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&...

    史上最全的iOS各种设备信息获取总结(iPhone XS Max/XR 详细信息已更新)

    这篇文章主要聚焦于iOS设备信息的获取方法,并特别强调了对iPhone XS Max和iPhone XR这两种型号的信息更新。 ### 一、获取iOS设备基本信息 1. **设备名称(deviceName)** - 获取方法:使用自定义的方法`get...

    iphone全局变量配置

    本文将深入探讨如何在iPhone应用中设置全局变量以及如何访问配置文件。 全局变量是在整个应用程序中都可以访问的变量,适用于存储那些在整个程序生命周期内都需要保持不变的数据。在Objective-C中,你可以通过以下...

    Iphone的系统声音

    Iphone的caf格式系统声音: 代码:NSString *path = [[NSBundle mainBundle] pathForResource:@"SIMToolkitPositiveACK" ofType:@"caf"]; AVAudioPlayer* theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:...

    iphone程序播放视频文件

    NSURL *videoURL = [[NSBundle mainBundle] URLForResource:@"ceshi" withExtension:@"mp4"]; self.player = [AVPlayer playerWithURL:videoURL]; self.playerLayer = [AVPlayerLayer playerLayerWithPlayer:self...

    iphone小结

    从本地资源加载图片,可以使用`NSBundle`的`resourcePath`获取资源路径,然后创建一个`NSURL`对象,再加载HTML字符串,将图片路径插入其中。例如,加载名为"0001.png"的图片。 5. **在WebView中加载并缩放图片**:...

    IOS应用源码之iphone开发技巧UI篇之主题切换 类似weico BEThemeDemo.zip

    该标题"IOS应用源码之iphone开发技巧UI篇之主题切换 类似weico BEThemeDemo.zip"表明这是一个关于iOS应用开发的源码项目,专注于UI(用户界面)部分,特别是主题切换的功能。它提到了“类似weico”,意味着这个项目...

    iPhone播放本地视频 多媒体源码_ios源码

    iPhone播放本地视频的代码主要涉及到多媒体框架,如AVFoundation框架,这是苹果官方推荐用于处理音频和视频的核心框架。本源码示例将深入探讨如何利用AVFoundation框架实现本地视频播放功能。 首先,我们需要了解...

    iPhone 版订票系统界面部分工程源码

    7. **本地化和国际化**:对于一个面向全球用户的订票系统,源码可能涉及到多语言支持,使用NSBundle和Localizable.strings文件进行字符串本地化。 8. **支付集成**:支付功能通常涉及第三方支付平台如Apple Pay或...

    Iphone_开发常用代码

    ### iPhone开发常用代码知识点 #### 一、更改Cell选中背景 在iOS开发过程中,我们经常需要自定义UITableViewCell(单元格)的样式,包括改变选中状态时的背景颜色或图像。下面是一段示例代码: ```objective-c ...

    iphone AVAudioPlayer类 音频播放

    本篇文章将深入探讨如何使用AVAudioPlayer类在iPhone上实现音频播放,并结合提供的VoicePlay.h和VoicePlay.mm文件进行分析。 首先,我们要了解AVAudioPlayer的基本用法。创建AVAudioPlayer对象时,通常需要提供音频...

    iOS开发读取plist文件、iphone中plist文件的读写存 DEMO

    本DEMO旨在教授如何在iPhone和iPad上读取、写入和保存plist文件。下面我们将详细探讨这些操作。 1. **读取plist文件** 要读取plist文件,首先需要获取文件路径。在iOS中,文件通常存储在沙盒的不同目录下,如...

Global site tag (gtag.js) - Google Analytics