iphone - How do I write my files to an NSBundle? -


i writing iphone/ipad app have zipped files come in contents of website can run upon extracting. put these files , folders single file i.e. nsbundle file can display user if single file , can deleted or moved not traversed. (my app allows traversal of folders throughout nsdocuments folder)

i know can import own nsbundle project , read website. @ possible write 1 using made directory structure files , folders must remain are, i.e. web folder described earlier?

if not nsbundle, can write(convert) folder other type of package?

if not, have other suggestions predicament

this not direct answer question, alternative way of looking @ problem.

  1. specifically, you've stated app allows traversal of folders throughout nsdocumentdirectory. since code enumerating files/folders in there, implement enumeration code treats folders matching pattern (e.g. *.bundle) leaf nodes in hierarchy; user need never know there inside there.

  2. taking 1 step further, store .zip files directly in documents directory, provide contents directly uiwebview requests access individual urls.

    it's possible register subclass of nsurlprotocol gets first crack @ examining url requests. if subclass says can handle particular url (e.g. particular host or path), instance of subclass created , asked provide content.

    at point, can use zip-reading code, example objective-zip read requested file within zip, , return contents request.

    use nsurlprotocol +registerclass: register subclass system.

    in following example, protocol handler ignores requests, except site. returns same hard-coded string (as proof-of-concept):

    myurlprotocolredirector.h:

    #import <foundation/foundation.h> @interface myurlprotocolredirector : nsurlprotocol + (bool)caninitwithrequest:(nsurlrequest *)request; + (nsurlrequest *)canonicalrequestforrequest:(nsurlrequest *)request; - (void)startloading; - (void)stoploading; @end 

    myurlprotocolredirector.m:

    #import "myurlprotocolredirector.h" @implementation myurlprotocolredirector + (bool)caninitwithrequest:(nsurlrequest *)request { if ([request.url.host compare:@"martinkenny.com"] == 0) { return yes; } return no; } + (nsurlrequest *)canonicalrequestforrequest:(nsurlrequest *)request { return request; } - (void)startloading { nsurlresponse *response = [[nsurlresponse alloc] initwithurl:self.request.url mimetype:@"text/plain" expectedcontentlength:11 textencodingname:nil]; [self.client urlprotocol:self didloaddata:[[nsdata alloc] initwithbytes:"hello world" length:11]]; [self.client urlprotocol:self didreceiveresponse:response cachestoragepolicy:nsurlcachestorageallowed]; [self.client urlprotocoldidfinishloading:self]; } - (void)stoploading { } @end 

    someviewcontroller.m:

    // register new url protocol handler system [nsurlprotocol registerclass:[myurlprotocolredirector class]]; uiwebview *webview = [[uiwebview alloc] initwithframe:self.view.bounds]; [webview loadrequest:[[nsurlrequest alloc] initwithurl:[nsurl urlwithstring:@"http://www.seenobjects.org/"]]]; [self.view addsubview:webview]; 

Comments

Popular posts from this blog

javascript - backbone.js Collection.add() doesn't `construct` (`initialize`) an object -

php - Get uncommon values from two or more arrays -

Adding duplicate array rows in Php -