【发布时间】:2012-05-25 06:26:26
【问题描述】:
我正在尝试使用 GData ObjC 库将视频从 iPhone 上传到 Youtube。
当我在添加库后尝试构建我的项目时(在此处显示: svn checkout http://gdata-objectivec-client.googlecode.com/svn/trunk/gdata-objectivec-client-read-only),我不断收到错误 -Duplicate interface definition for class 'GDataHTTPUploadFetcher'- 在 GDataServiceBase.m 中。
但是,当我在一个新项目中执行相同操作时,我根本不会遇到任何问题。我检查了所有的导入和项目设置,它们都是一样的。
我应该寻找什么来解决这样的问题?
附加信息:
(在 cmets 中回答 Till 的一个问题,因为我对类别不是很确定)
在GDataHTTPUploadFetcher.h中,界面是这样的:
@interface GDataHTTPUploadFetcher : GDataHTTPFetcher {
GDataHTTPFetcher *chunkFetcher_;
BOOL needsManualProgress_
NSURL *locationURL_;
// uploadData_ or uploadFileHandle_ may be set, but not both
NSData *uploadData_;
NSFileHandle *uploadFileHandle_;
NSInteger uploadFileHandleLength_;
NSString *uploadMIMEType_;
NSUInteger chunkSize_;
BOOL isPaused_;
.
.
.
}
+ (GDataHTTPUploadFetcher *)uploadFetcherWithRequest:(NSURLRequest *)request
uploadData:(NSData *)data
uploadMIMEType:(NSString *)uploadMIMEType
chunkSize:(NSUInteger)chunkSize;
+ (GDataHTTPUploadFetcher *)uploadFetcherWithRequest:(NSURLRequest *)request
uploadFileHandle:(NSFileHandle *)fileHandle
uploadMIMEType:(NSString *)uploadMIMEType
chunkSize:(NSUInteger)chunkSize;
- (id)initWithRequest:(NSURLRequest *)request
uploadData:(NSData *)data
uploadFileHandle:(NSFileHandle *)fileHandle
uploadMIMEType:(NSString *)uploadMIMEType
chunkSize:(NSUInteger)chunkSize;
- (void)pauseFetching;
- (void)resumeFetchingWithDelegate:(id)delegate;
- (BOOL)isPaused;
@end
在GDataHTTPUploadFetcher.m中,界面是这样的:
@interface GDataHTTPUploadFetcher (InternalMethods)
- (void)uploadNextChunkWithOffset:(NSUInteger)offset;
- (void)uploadNextChunkWithOffset:(NSUInteger)offset
fetcherProperties:(NSDictionary *)props;
- (void)destroyChunkFetcher;
- (void)uploadFetcher:(GDataHTTPFetcher *)fetcher
didSendBytes:(NSInteger)bytesSent
totalBytesSent:(NSInteger)totalBytesSent
totalBytesExpectedToSend:(NSInteger)totalBytesExpected;
- (void)reportProgressManually;
- (NSUInteger)fullUploadLength;
// private methods of the superclass
- (void)invokeSentDataCallback:(SEL)sel
target:(id)target
didSendBodyData:(NSInteger)bytesWritten
totalBytesWritten:(NSInteger)totalBytesWritten
totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite;
- (void)invokeStatusCallback:(SEL)sel
target:(id)target
status:(NSInteger)status
data:(NSData *)data;
- (BOOL)invokeRetryCallback:(SEL)sel
target:(id)target
willRetry:(BOOL)willRetry
error:(NSError *)error;
@end
在GDataServiceBase.m中,界面是这样的:
@interface GDataHTTPUploadFetcher : GDataHTTPFetcher
+ (GDataHTTPUploadFetcher *)uploadFetcherWithRequest:(NSURLRequest *)request
uploadData:(NSData *)data
uploadMIMEType:(NSString *)uploadMIMEType
chunkSize:(NSUInteger)chunkSize;
+ (GDataHTTPUploadFetcher *)uploadFetcherWithRequest:(NSURLRequest *)request
uploadFileHandle:(NSFileHandle *)uploadFileHandle
uploadMIMEType:(NSString *)uploadMIMEType
chunkSize:(NSUInteger)chunkSize;
- (void)pauseFetching;
- (void)resumeFetchingWithDelegate:(id)delegate;
- (BOOL)isPaused;
@end
但问题是,此代码只会在现有项目之一中产生问题,而不会在新项目中产生问题。
【问题讨论】:
-
如果您搜索
@implementation GDataHTTPUploadFetcher会发生什么?您是否在 2 个文件中看到它? -
不,它只存在于一个文件中。但是当我搜索“@interface GDataHTTPUploadFetcher”时,它在 3 个文件中找到:GDataHTTPUploadFetcher.h/.m 和 GDataServiceBase.m
-
我假设您在实现文件 (.m) 中找到的接口定义实际上是类别,对吗?
-
我更新了我的问题,来回答你的问题。但就像我说的,问题是这段代码只在我现有的一个项目中存在问题,而在新项目中没有。
-
请同时附上
GDataHTTPUploadFetcher.h的相关部分
标签: iphone objective-c ios xcode cocoa-touch