2010-12-15 2 views
0

Ey ребята, вот мой код:NSURLDownload не обнаруживается в SDK 4.2

#import <Foundation/Foundation.h> 
@interface Updater : NSObject { 

    NSURLConnection *updateConnection; 
    NSURLDownload *downloadConnection; //error at this line 

} 

@end 

Это ошибка я получаю на отмеченной линии:

Updater.h:15: error: expected specifier-qualifier-list before 'NSURLDownload' 

Любая идея, почему я получаю это сообщение об ошибке? Я включил Foundation Framework и не понимаю, почему компилятор жалуется, особенно учитывая, что он вообще не жалуется на NSURLConnection. Благодаря!

ответ

2

Класс NSURLDownload доступен только для MacOS, на iOS вы должны использовать NSURLConnection. Из docs:

IOS Примечание: Класс NSURLDownload является не доступен в IOS, потому что загрузки непосредственно в файл система не поощряла. Используйте класс NSURLConnection вместо

Если у вас есть большой кусок данных, чтобы загрузить и хотите, чтобы избежать проблем с памятью Вы можете использовать класс NSFileHandle в связи делегата для записи полученных данных непосредственно на диск вместо того, чтобы держать его в памяти.

+0

Высокий, спасибо за указывая, что к меня. Я читал документы, но об этом забыл. Еще раз спасибо! – Stunner 2010-12-15 22:56:16

1

Как вы читаете в iOS Примечание: пока невозможно использовать NSURLDownload на ios, но приведенная ниже ссылка показывает вам простой способ загрузить все, что вы хотите из сети, в окно приложения. Надеюсь, вам понравится. Приветствия http://www.ifans.com/forums/showthread.php?t=169611

------------ Ниже ссылка ------------

// 
// UIDownloadBar.h 
// UIDownloadBar 
// 
// Created by John on 3/20/09. 
// Copyright 2009 Gojohnnyboi. All rights reserved. 
// 

#import <UIKit/UIKit.h> 

@class UIProgressView; 
@protocol UIDownloadBarDelegate; 

@interface UIDownloadBar : UIProgressView { 
    NSURLRequest* DownloadRequest; 
    NSURLConnection* DownloadConnection; 
    NSMutableData* receivedData; 
    NSString* localFilename; 
    id<UIDownloadBarDelegate> delegate; 
    long long bytesReceived; 
    long long expectedBytes; 

    float percentComplete; 
} 

- (UIDownloadBar *)initWithURL:(NSURL *)fileURL progressBarFrame:(CGRect)frame timeout:(NSInteger)timeout delegate:(id<UIDownloadBarDelegate>)theDelegate; 

@property (nonatomic, readonly) NSMutableData* receivedData; 
@property (nonatomic, readonly, retain) NSURLRequest* DownloadRequest; 
@property (nonatomic, readonly, retain) NSURLConnection* DownloadConnection; 
@property (nonatomic, assign) id<UIDownloadBarDelegate> delegate; 

@property (nonatomic, readonly) float percentComplete; 

@end 

@protocol UIDownloadBarDelegate<NSObject> 

@optional 
- (void)downloadBar:(UIDownloadBar *)downloadBar didFinishWithData:(NSData *)fileData suggestedFilename:(NSString *)filename; 
- (void)downloadBar:(UIDownloadBar *)downloadBar didFailWithError:(NSError *)error; 
- (void)downloadBarUpdated:(UIDownloadBar *)downloadBar; 

@end 


// 
// UIDownloadBar.m 
// UIDownloadBar 
// 
// Created by John on 3/20/09. 
// Copyright 2009 Gojohnnyboi. All rights reserved. 
// 

#import "UIDownloadBar.h" 


@implementation UIDownloadBar 

@synthesize DownloadRequest, 
    DownloadConnection, 
    receivedData, 
    delegate, 
    percentComplete; 


- (UIDownloadBar *)initWithURL:(NSURL *)fileURL progressBarFrame:(CGRect)frame timeout:(NSInteger)timeout delegate:(id<UIDownloadBarDelegate>)theDelegate { 
    self = [super initWithFrame:frame]; 
    if(self) { 
     self.delegate = theDelegate; 
     bytesReceived = percentComplete = 0; 
     localFilename = [[[fileURL absoluteString] lastPathComponent] copy]; 
     receivedData = [[NSMutableData alloc] initWithLength:0]; 
     self.progress = 0.0; 
     self.backgroundColor = [UIColor clearColor]; 
     DownloadRequest = [[NSURLRequest alloc] initWithURL:fileURL cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:timeout]; 
     DownloadConnection = [[NSURLConnection alloc] initWithRequest:DownloadRequest delegate:self startImmediately:YES]; 

     if(DownloadConnection == nil) { 
      [self.delegate downloadBar:self didFailWithError:[NSError errorWithDomain:@"UIDownloadBar Error" code:1 userInfo:[NSDictionary dictionaryWithObjectsAndKeys:@"NSURLConnection Failed", NSLocalizedDescriptionKey, nil]]]; 
     } 
    } 

    return self; 
} 

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { 
    [self.receivedData appendData:data]; 

    NSInteger receivedLen = [data length]; 
    bytesReceived = (bytesReceived + receivedLen); 

    if(expectedBytes != NSURLResponseUnknownLength) { 
     self.progress = ((bytesReceived/(float)expectedBytes)*100)/100; 
     percentComplete = self.progress*100; 
    } 

    [delegate downloadBarUpdated:self]; 
} 

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error { 
    [self.delegate downloadBar:self didFailWithError:error]; 
    [connection release]; 
} 

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response { 
    expectedBytes = [response expectedContentLength]; 
} 

- (void)connectionDidFinishLoading:(NSURLConnection *)connection { 
    [self.delegate downloadBar:self didFinishWithData:self.receivedData suggestedFilename:localFilename]; 
    [connection release]; 
} 

- (void)drawRect:(CGRect)rect { 
    [super drawRect:rect]; 
} 

- (void)dealloc { 
    [localFilename release]; 
    [receivedData release]; 
    [DownloadRequest release]; 
    [DownloadConnection release]; 
    [super dealloc]; 
} 


@end 
+0

Спасибо за обмен! – Stunner 2011-09-12 10:58:11

Смежные вопросы