Tag: nsbundle

如何在框架内使用Core Data的ManagedObjectModel?

我试图将我的一个应用程序的特定部分迁移到一个框架中,以便我可以在我的应用程序本身和其中一个新的iOS 8小部件中使用它。 这部分是处理所有我的数据在核心数据。 移动所有内容并访问它非常简单。 我只是无法在那里访问我的momd文件。 当创buildNSManagedObjectModel我仍然尝试加载苹果的代码模板中所示的momd : NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"MyApp" withExtension:@"momd"]; __managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL]; 不幸的是, modelURL保持nil ,因此,当访问核心数据堆栈时MyApp崩溃,出现此错误: 2014-08-01 22:39:56.885 MyApp[81375:7417914] Cannot create an NSPersistentStoreCoordinator with a nil model 2014-08-01 22:39:56.903 MyApp[81375:7417914] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Cannot create an NSPersistentStoreCoordinator with a nil model' 那么,在使用Core Data的框架内工作时,正确的方法是什么呢?

使用iOS下载的软件包中包含的XIB / NIB文件

从表面上看,这似乎是一个非常简单的问题,但由于某种原因,我无法完成这项工作。 我有一个杂志风格的应用程序,以压缩包的forms下载每个问题的数据。 一旦下载并解压,应用程序就可以成功地访问包中包含的各种文件。 这些包括JSON,PNG,JPG,video等。 但是,我还包含一个XIB文件,其中包含一系列UIViews内容的物理布局,这是我不能使用的文件。 该文件存在,但是当我尝试使用它加载它: UIViewController *controller = [[UIViewController alloc] initWithNibName: @"ViewController" bundle: assetBundle]; 我得到以下错误: Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle </var/mobile/Applications/C6718DB8-0C0F-4D38-84E6-55C145279957/Documents/asset-4.bundle> (not yet loaded)' with name 'ViewController'' 现在,这是一个iOS强制限制,不从下载的包中访问XIB,或者我在调用XIB使用时出现一些错误? 但是我找不到明确禁止以这种方式使用获取的捆绑包。

如何检查故事板是否存在于特定的NSBundle中

我正在制作一个使用我创build的框架的应用程序。 该框架包含故事板,但在某些情况下,使用该框架的项目将需要通过提供新的框架来覆盖故事板。 所以我的目标是检查一个具有给定名称的故事板是否存在于[NSBundle mainBundle] ,如果没有,那么我将从我的框架中获得基础版本。 我试图从主包中获取故事板,并检查结果是否为零,但是如果找不到则会引发exception。 所以我然后试图捕捉exception,然后从框架中加载故事板。 这工作,但它感觉肮脏,它可以很好地打我的应用程序的性能。 我也尝试了bundle中的pathForResource : if([[NSBundle mainBundle] pathForResource:name ofType:@"storyboard"] != nil) { } 但是这从来没有find故事板。 有谁知道任何其他方式,我可以检查一个故事板是否存在于一个特定的包?

我怎么能从一个NSBundle中的Assets.car(编译版本的xcassets)加载图像? (不使用CocoaPods)

我们正在收到这样的错误消息: 无法加载标识符为“com.company.OurResourceBundle”的包中的nib引用的“iconStatus”图像。 基本上,我们把一堆图像放在xcassets文件夹(适用于非捆绑加载的情况下)。 xcassets和nib文件被打包到资源包中。 当应用程序启动时, 在nib文件中的uiimageview无法加载任何图像与上述错误信息。 [UIImage imageNamed:@“OurResourceBundle.bundle / iconStatus”]返回nil 这个问题与“ 如何从一个NSBundle中的Assets.car(xcassets的编译版本)加载图像 ”有关,但我们不使用CocoaPods。

iPhone / iPad:无法将文件夹从NSBundle复制到NSDocumentDirectory

我试图复制一个文件夹在我的NSBundle包含相当多的图像。 我试着用这些代码来做。 NSFileManager *fileManager = [NSFileManager defaultManager]; NSError *error; NSArray *paths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSString *documentDBFolderPath = [documentsDirectory stringByAppendingPathComponent:@"Images"]; NSString *resourceDBFolderPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"Images"]; [fileManager copyItemAtPath:resourceDBFolderPath toPath:documentDBFolderPath error:&error]; 比方说,名为Test.png的文件夹中有一个图像,我想在我的button上显示图像,这是行不通的! 但是,如果我只从NSBundle复制到NSDocumentDirectory的单个图像,它的工作原理! 例: 更改 stringByAppendingPathComponent:@"Images" 至 stringByAppendingPathComponent:@"Test.png" 所以问题在于复制文件夹到NSDocumentDirectory! 我的代码是否错误? 或者不可能复制文件夹? (这意味着我必须单独复制文件)

如何获取ios中的当前应用程序图标

有没有办法在cocoa触摸应用程序中获取当前的应用程序图标? 谢谢。

为什么“loadNibNamed”方法返回数组?

当我们使用loadNibNamed方法获取nib文件时,为什么会返回一个数组,是不是一个nib文件名对应一个nib文件? 我试图打印这个数组的数量,我发现它总是返回1.我希望你能帮我解释一下,谢谢你了! 以下是代码片段: NSArray *array = [[NSBundle mainBundle] loadNibNamed:@"TestView" owner:self options:nil]; NSLog(@"array's count is %ld",array.count);

无法从plist读取

我正在尝试做一些我已经知道该怎么做的事情,但这并不奏效。 寻找想法来解决这个问题。 我认为这与Xcode 4.1创buildplist文件的方式有关。 我试图从一个plist文件中读取string,并将其转储到一个NSArray中。 这是我的代码: NSString *myFile = [[NSBundle mainBundle] pathForResource:@"File1"ofType:@"plist"]; myArray = [[NSArray alloc]initWithContentsOfFile: myFile]; 我在Xcode中创build了一个plist文件 – 顶层数组和一些string。 myArray始终为空。 我试图在文本编辑器中打开plist,因为我在其他地方读到了stackoverflow,Xcode 4创build了顶级字典的plist。 我手动编辑,使其在顶层的数组 – 没有成功。 最后,我回到顶级字典,并试图将其读入NSDictionary – 也没有成功。 我在教程后观看了教程,并在StackOverflow上阅读了许多类似的问题,但是我无法从plist文件中读取任何东西 – 它肯定是在包中。 我已经无数次地在Xcode中重新创build了plist。 感谢任何build议。 这是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>New item</key> <array> <string>Ping</string> <string>Pang</string> <string>Pong</string> </array> […]

检查包中是否存在文件

我们如何检查一个文件是否存在于应用程序中加载的外部软件包中或之前获取?

调用时XCTest失败

我有一些代码,在某些时候调用[NSBundle mainBundle] ,主要是读取/设置首选项。 当我unit testing的方法,testing失败,因为testing的mainBundle不包含该文件。 这是一个已知的问题 ,苹果不会因为他们认为它不是一个bug而修复 : 他们答复的要点是XCTest通过返回它自己的主包而不是testing目标包来正常工作。 以前我们的代码是在NSBundle的+mainBundle类方法上使用类别重写来解决这个问题。 但是这是很危险的,因为覆盖类别中现有方法的行为是未定义的 。 如果在类别中声明的方法的名称与原始类中的方法相同,或者在同一个类(甚至是超类)上的另一个类中的方法相同,则行为是不确定的运行。 实际上Xcode提醒你: 类正在实现一个方法,也将由其主要类实现 那么,解决这个问题的正确方法是什么呢?