2011-08-07 21 views
6

Sé que esta es una pregunta muy simple, pero he estado luchando con ella por un tiempo. He leído algunos hilos pero todavía puedo encontrar la respuesta.agregando una biblioteca simple a un proyecto xcode 4

Estoy tratando de agregar esta biblioteca DDMathParser a mi proyecto existente. La documentación del analizador matemático indica

"Simplemente copie la subcarpeta" DDMathParser "en su proyecto, #importar" DDMathParser.h ", y ya está listo".

Agregué la subcarpeta a mi proyecto y agregué el encabezado `#import" DDMathParser.h 'a mi primer controlador de vista. Al principio Xcode indicaba que no podía encontrar el archivo. Tomé el consejo de otro hilo y cambiado de cabecera para incluir la carpeta

#import "DDMathParser/DDMathParser.h" 

Xcode parece encontrar el archivo de la carpeta y el encabezado, pero cuando corro una prueba de la documentación, como

NSLog(@"%@", [@"1 + 2" numberByEvaluatingString]); 

estoy consiguiendo el error 'Tema 1 : Programa recibido sginal: "SIGABRT" 'Puedo ver en el DDMathPar Ser archivo de muestra que hay un objetivo, me pregunto si este es mi problema.

Para aclarar la cuestión que estoy tratando de añadir la biblioteca DDMathParser a un simple controlador de vista y ejecute el staement NSLog(@"%@", [@"1 + 2" numberByEvaluatingString]); Cualquier ayuda/aclaración al hacerlo sería muy apreciada.

Respuesta

12

En primer lugar, no agregue el código DDMathParser a su proyecto mediante una copia de subcarpeta. Si lo hace, le resultará difícil obtener actualizaciones futuras del código y, en general, no es un buen enfoque para incluir código externo en sus proyectos.

En su lugar, debe agregar el git repo como un submódulo de su proyecto (está usando git, ¿verdad?) E importar los archivos relevantes a su proyecto. Aquí hay una solución paso a paso:

  1. Agregue el repositorio DDMathParser como un submódulo a su proyecto. Here are instructions sobre cómo agregar un submódulo en su directorio de proyecto. Eche un vistazo a esa respuesta, pero, en aras de la brevedad, emitirá este comando desde la terminal en el directorio raíz de su proyecto: git submodule add https://github.com/davedelong/DDMathParser.git External/DDMathParser. Esto creará un nuevo subdirectorio llamado Externo al directorio raíz de su proyecto y dentro de Externo se copiará el proyecto DDMathParser.
  2. Agregue el directorio DDMathParser a su proyecto. Se encontrará en el directorio <Your Root Project Dir>/External/DDMathParser/DDMathParser. Asegúrese de marcar la casilla "agregar a los destinos" y no para marcar la casilla "copiar elementos".
  3. Agregue #import "DDMathParser.h" a su viewcontroller.

DDMathParser ahora debería funcionar como esperaba. Si el autor sale con una actualización del código, puede emitir el siguiente comando desde la terminal para extraer las últimas actualizaciones de github: git submodule update.

Nota: Creé un nuevo proyecto desde cero, seguí estos pasos e incluí el ejemplo NSLog() para garantizar que no haya ningún problema.

+0

Gracias por la respuesta, su publicación fue muy útil, pero sigo recibiendo errores. Seguí tus instrucciones paso a paso y pude descargar el código en el directorio externo, agregar los archivos al proyecto y agregar el encabezado sin problemas, pero cuando ejecuto el programa de prueba recibo 15 errores, todos provenientes de DDMathEvaluator.m y _DDDEcimalFunctions .metro. No puedo entender lo que hice diferente de ti. Por favor, avíseme si tiene alguna sugerencia y muchas gracias por la ayuda. – user813611

+0

Hmm ... ¿está seguro de que seleccionó su objetivo cuando estaba agregando el directorio DDMathParser a su proyecto? Si selecciona DDMathEvaluator.m, ¿puede confirmar que está incluido en su objetivo? Como dije, estaba caminando paso a paso mientras escribía la ayuda y funcionó bien. Como prueba, ¿podrías crear un nuevo proyecto desde cero y probarlo? – memmons

+0

Gracias de nuevo por la respuesta Harkonian, 1. Creé un nuevo proyecto llamado mathParserTest view based app con git repository 2. Utilicé el comando del terminal para descargar DDMathParser en la carpeta raíz del proyecto 3. Elijo FILE-> Agregar archivos a " mathParserTest ", luego selecciono Dir>/External/DDMathParser/DDMathParser con Copiar elementos en grupos sin marcar, Crear grupos para cualquier carpeta agregada marcada y Agregar a objetivos mathParserTest marcada. El objetivo tiene el icono IB con el nombre mathParserTest junto a él. La carpeta con archivos se importa en el proyecto y se ve bien hasta que compilo. – user813611

0

Seguí estos pasos también, hasta que pude hacerlo funcionar. El método sugerido tiene algunos defectos.

  1. A medida que el chico delante de mí tenía que llevar --- Sólo en las fuentes de DDMathParser, y compilarlos como parte de su objetivo. Esto vincula para que use la misma configuración de compilación, la versión del SDK y la versión del sistema de implementación como autor de DDMathParser. Ejemplos:

    • no usé ARC en mi destino --- ahora debo hacerlo.
    • Tenía la intención de usar MacOS 10.8 SDK en mi proyecto (por muchas buenas razones) pero obtuve un extraño error de compilación ARC en una fuente DDMathParser, que solo desapareció cuando cambié a SDK 10.9 (versión utilizada por autor en sus muestras y documentos)
    • que deben proporcionar mi solicitud para MacOS 10.8 y superior, ahora estoy seguro de que va a funcionar
  2. no sé qué ocurre si empujo mi padre cesión temporal al servidor, y otro amigo tira eso. ¿Recibirá el depósito de DDMathParser automáticamente? ¿Cómo? ¡Él debe tener acceso a eso! El esquema no me parece completo.

voy a sugerir para ayudar al autor en el envasado de su DDMathParser como marco, y entonces usted será capaz de importar el archivo de proyecto de DDMAthParser en su proyecto --- no las fuentes, y simplemente enlazar con la producto del proyecto DDMathParser (un marco privado). Parece mucho más agradable. el marco se puede compilar usando la configuración del autor, y acabamos de recibir el binario muy bien empaquetado.

Cuestiones relacionadas