I have a phonegap application where it has added a cocoa touch static library project to it as a sub project. I need to access an xml file that is embedded to the library project.
NSString *configXmlFilePath=[[NSBundle mainBundle]pathForResource:#"configurationFile" ofType:#"xml"];
NSString *xmlContent=[[NSString alloc]initWithContentsOfFile:configXmlFilePath encoding:NSUTF8StringEncoding error:nil];
that's how I access a file in the project usually. but since this is a sub project, I can't access the path like this.Does anyone know how to do this?
You should be able to drag the file in question from your subproject in the Project Navigator to the "Copy Resources" build phase in your master Xcode project. Let me know if you'd like me to explain in detail.
Related
I'd like to create a folder/file (similar to how the .app files/folders work) so that I can have a directory within my file. But still show the document icon that I setup via the xcode project interface under the info panel.
No idea how to go about this, any ideas?
Solution:
So basically, you just hit an option in Xcode under the document saying that you do want it to be a bundle. Then you just create a folder with the extension you have in your document (info.plist). Thanks y'all.
I think what you are looking for are Packages.
See About Bundles and Document Packages for more details.
I wanted to separate my resources, nib files and localization files into a common reusable bundle. And so I created a bundle for my ios application and specified resources to be included inside the bundle using build phases, copy bundle resources. But, now if I try to load the bundle, I am not able to load the bundle. I try using [NSBundle allBundles] and the array shows only the main apps bundle.
I also tried to enumerate the directory for NSApplicationPath but again the only bundle available is my application default bundle. I wanted to learn this technique and make use of it to separate my resources. Any help and suggestions would be greatly appreciated. Thank you
[NSBundle bundleWithPath:[NSString stringWithFormat:#"%#/%#", [[NSBundle mainBundle] bundlePath], pathToYourBundleWithinTheDotAppDirectory];
Let me know how you get on.
Try something like this:
NSBundle* bundle=[NSBundle bundleWithIdentifier: #"bundle name"];
And make sure that you have selected these options when you have dragged the bundle to the project:
For projects with one bundle, I use:
// in this example, we load test.png from the bundle
NSString *pathToResource = [[NSBundle mainBundle] pathForResource:#"test" ofType:#"png"];
What makes this so convenient is that when you have localized files, this provides the path the the file for the current user locale. This is handy since localized files are not in the main directory, but are rather in their own subfolders (for example, English localized files are in the #"en.lproj" subfolder), and calling them by name is a hassle because you need the full path. This method gets the path for you.
I'm new in iOS development, and met this library linking problem in last few days.
I was trying to use GMGridView in a project, but cannot make it working.
This project is shipped as static library, so I just drag the xcodeproj file in my project. Then I added libGMGridView.a in Link Binary With Libraries, GMGridView in Target Dependencies. I also added the path in Header Search Paths.
However, Xcode still report .h file not found error when I tried to import GMGridView.h.
Could anyone give me a hand on this? Thanks in advance!
Had the same issue!!! Made it work!!!!
soooooooo:
copy GMGridView folder from https://github.com/gmoledina/GMGridView to your project dir
in xcode right click on any file group and choose add files
find GMGridView folder in your folder dir and choose GMGridView.xcodeproj - (dont copy, create groups not folders, add targets)
go to your project targets - search - HEADER_SEARCH_PATHS add- GMGridView/**
select Building phases in settings - choose target dependencies and add GMGridView
select Building phases in settings - link binary libraries and add libGMGridView.a
import should be:
#import "GMGridView.h"
#import <QuartzCore/QuartzCore.h>
I'm trying to obtain the path for a java file which I want to load into an NSString.
Currently this line of code is returning nil.
[[NSBundle mainBundle] pathForResource:#"LockDialog" ofType:#"java"]];
I added my file "LockDialog.java" to the project via the menu, File>New>New File. The pathForResource method seems fine for returning the path of txt files or html files but completely fails when I'm trying to get the path of a java file.
Any help or insight massively appreciated,
Thanks,
James
File type should not matter, but chances are the file is not actually being copied to your application bundle. Check your Target>Build Phases>Copy Bundle Resources settings to ensure it's there, and if not, drag it over to this list.
In addition to adding the file to the project, you need to make sure that it gets added to the output bundle.
Open the project in Xcode, navigate to your target, switch to the "Build Phases" tab, and add "LockDialog.java" to the "Copy Bundle Resources" list.
In Xcode, the Resources folder links to the NSDocumentsFolder of the app? Or what else?
Is there a way to see the files in NSDocumentFolder without write code?
No the resource folder in Xcode does not link to the document directory, it is just imaginary folder for organization in xcode. However there you could see the content of your document directory by browsing to the folder in the simulator.
The folders you use in XCode will not be copied to your application bundle even though all their content (as well as anything else you have in your XCode project...excluding compiled resources) will be flatly copied into your Bundle Folder. If what you need is accessing the Documents folder on an iOS app or in a the User's library you can access it (by code, I'm sorry) with:
NSString *documentFolderPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
And anything you need to be in there you will have to copy by code.