简体   繁体   English

Class 返回 NSMutabledata

[英]Class return NSMutabledata

I want to write a class which return NSMutableData, i have this code but couldn't manage how it return self.我想写一个返回 NSMutableData 的 class,我有这个代码但无法管理它如何返回自我。 any help would be great.任何帮助都会很棒。

@interface ITumblr_QueryTumblr : NSMutableData {

    NSURLConnection* connection;
    NSMutableData* data;    

}



-(void)loadImageFromURL:(NSURL*)url {

    if (connection!=nil) { [connection release]; }
    if (data!=nil) { [data release]; }
    NSURLRequest* request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];
    connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];

}

-(void)connection:(NSURLConnection *)theConnection didReceiveData:(NSData *)incrementalData {

    if (data==nil) {

        data = [[NSMutableData alloc] initWithCapacity:2048];

    }

    [data appendData:incrementalData];

}

-(void)connectionDidFinishLoading:(NSURLConnection*)theConnection {

    [connection release];
    connection=nil;

    [data release];
    data=nil;

}

A class doesn't return anything, though a method can.尽管方法可以,但 class 不会返回任何内容。 To have a method that returns data, use要拥有返回数据的方法,请使用

-(NSMutableData *)returnSomeData {
  return data;
}

Alternately, you can just call the property .data from an instance of your class.或者,您可以只从 class 的实例中调用属性.data

assuming that at your url you have a.plist file containing a dictionary, you will have to modify your connectionDidFinishLoading to something like this:假设在您的 url 中您有一个包含字典的.plist 文件,您必须将您的 connectionDidFinishLoading 修改为如下所示:

(void)connectionDidFinishLoading:(NSURLConnection*)theConnection {

    [connection release]; connection=nil;

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES); 
NSString *documentsDirectoryPath = [paths objectAtIndex:0];

     NSString *myFilePath = [documentsDirectoryPathstringByAppendingPathComponent:@"myfile.plist"];

     [data writeToFile:myFilePath atomicaly:YES];

    [data release]; data=nil;                           

     return [NSMutableDictionary dictionaryWithContentsOfFile:myFilePath];
}

but this is a hard method, you should use:但这是一种很难的方法,您应该使用:

 (id)dictionaryWithContentsOfURL:(NSURL *)aURL

because it saves you from the trouble因为它可以让你免于麻烦

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM