Как включить SSZipArchive для IOS 5?

Для проекта, над которым я работаю, мне нужно было разархивировать определенные файлы. Для этого я нашел библиотеку SSZipArchive. Я включил это в Xcode 4.2 (щелкните правой кнопкой мыши папку «Классы» -> «Добавить файлы в проект», установив в диалоговом окне флажок «Копировать элементы в папку группы назначения»). Я включаю библиотеку libz (я пробовал и libz, и zlib1.2.5). Я пытаюсь скомпилировать и вдруг у меня 20 ошибок:

/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:311:1: error: expected identifier or '(' [1]
 @class NSString, Protocol;
 ^    
/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:313:19: error: unknown type name 'NSString' [1]
 FOUNDATION_EXPORT NSString *NSStringFromSelector(SEL aSelector);
                   ^
/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:314:44: error: unknown type name 'NSString' [1]
 FOUNDATION_EXPORT SEL NSSelectorFromString(NSString *aSelectorName);
                                            ^
/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:316:19: error: unknown type name 'NSString' [1]
 FOUNDATION_EXPORT NSString *NSStringFromClass(Class aClass);
                   ^
/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:317:43: error: unknown type name 'NSString' [1]
 FOUNDATION_EXPORT Class NSClassFromString(NSString *aClassName);
                                           ^
/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:319:19: error: unknown type name 'NSString' [1]
 FOUNDATION_EXPORT NSString *NSStringFromProtocol(Protocol *proto) NS_AVAILABLE(10_5, 2_0);
                   ^
/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:319:50: error: unknown type name 'Protocol' [1]
 FOUNDATION_EXPORT NSString *NSStringFromProtocol(Protocol *proto) NS_AVAILABLE(10_5, 2_0);
                                                  ^
/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:320:19: error: unknown type name 'Protocol' [1]
 FOUNDATION_EXPORT Protocol *NSProtocolFromString(NSString *namestr) NS_AVAILABLE(10_5, 2_0);
                   ^
/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:320:50: error: unknown type name 'NSString' [1]
 FOUNDATION_EXPORT Protocol *NSProtocolFromString(NSString *namestr) NS_AVAILABLE(10_5, 2_0);
                                                  ^
 /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:324:30: error: unknown type name 'NSString' [1]
 FOUNDATION_EXPORT void NSLog(NSString *format, ...) NS_FORMAT_FUNCTION(1,2);
                              ^
/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:324:53:{324:53-324:76}: error: format argument not an NSString [3]
 FOUNDATION_EXPORT void NSLog(NSString *format, ...) NS_FORMAT_FUNCTION(1,2);
                                                     ^~~~~~~~~~~~~~~~~~~~~~~
/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:85:49: note: instantiated from:
         #define NS_FORMAT_FUNCTION(F,A) __attribute__((format(__NSString__, F, A)))
                                                        ^
/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:325:31: error: unknown type name 'NSString' [1]
 FOUNDATION_EXPORT void NSLogv(NSString *format, va_list args) NS_FORMAT_FUNCTION(1,0);
                               ^
/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:325:63:{325:63-325:86}: error: format argument not an NSString [3]
 FOUNDATION_EXPORT void NSLogv(NSString *format, va_list args) NS_FORMAT_FUNCTION(1,0);
                                                               ^~~~~~~~~~~~~~~~~~~~~~~
/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:85:49: note: instantiated from:
         #define NS_FORMAT_FUNCTION(F,A) __attribute__((format(__NSString__, F, A)))

Это все ошибки в основной библиотеке, поэтому, вероятно, что-то пошло не так с включением библиотеки в Xcode. Мне удалось сузить круг виновника до библиотеки minizip, которую использует SSZipArchive (если я удалю эту библиотеку, ошибки исчезнут, и компилятор заработает так, как должен), но я довольно озадачен тем, почему это вызывает у компилятора так много проблем. .


person psgels    schedule 25.01.2012    source источник


Ответы (2)


После долгих головных болей я понял, в чем была проблема. Оказалось, что это _Prefix.pch. Я полностью просмотрел его, но оказалось, что у меня там была следующая строка:

#import "someclass.h"

Этот класс загружался вместе с .c-файлами библиотеки minizip, в результате чего заголовки Objective-C включались в .c-файлы, что не нравилось XCode. Обертывание этих операторов в оператор #ifdef устранило проблему:

#ifdef __OBJC__
   #import "someclass.h"
#endif
person psgels    schedule 26.01.2012
comment
У меня была такая же проблема (и сообщения об ошибках) после обновления до Xcode 4.3.1 и iOS 5.1. Раньше проект работал нормально... новый компилятор стал более строгим? - person Palimondo; 15.03.2012
comment
Абсолютно спасатель! Ошибки, представленные XCode, являются простой BS, спасибо богу за StackOverflow :) - person Viktor Benei; 09.06.2012

Обратитесь к приведенной ниже ссылке, которая работает как с приложениями для iPhone, так и с приложениями для Mac. Архивировать и разархивировать из приложения

person karan singh rajpoot    schedule 02.04.2013
comment
ОП не просил альтернатив их методу. - person Ash; 09.06.2015