Utilizando AFHTTPRequestOperation en XCTests Tengo el código de caso de prueba siguiente: Esperaba que el caso de prueba para bloquear y esperar a que la solicitud http para terminar. Lo extraño es que la AFHTTPRequestOperation nunca alcanza el bloque de éxito incluso la url es válida. Si utilizo el siguiente código fuera de XCTest, no sucederá, el bloque de éxito se ejecutará. ¿Alguien ha visto esto antes? Mejor manera de: Un par de observaciones: Su prueba está congelando porque AFNetworking envía sus bloques de finalización a la cola principal. Pero has bloqueado el hilo principal con el emisor de la emisora. Resultando en un punto muerto. Puede resolver esto estableciendo la complejidad de los gestores como una cola global para los propósitos de la prueba, eliminando así el bloqueo causado por el semáforo en el subproceso principal: Nota: hoy en día se utilizaría XCTestExpectation para realizar pruebas asíncronas. Esto elimina la necesidad del semáforo y, por coincidencia, también resuelve el problema del interbloqueo: Por cierto, si usas XCTestExpectation o semáforo, asegúrate de que ambos bloques de éxito y fallo satisfagan la expectativa / semáforo. UITabBarControllerDelegate tiene un método de delegado - tabBarController: shouldSelectViewController. Sólo implementarlo y comprobar si el usuario está conectado o no. p. ej. - (BOOL) tabBarController: (UITabBarController) tabBarController shouldSelectViewController: (UIViewController) viewController cosa que usted puede también comprobar qué ver controlador tiene. NSObject isSubclassOfClass: es un método de clase para NSObject y no todas las clases son subclases de NSObject. Parece como si usted ha encontrado la clase privada que no es una subclase de NSObject, por lo que requiere un manejo más delicado para la comprobación de la herencia. Probar: BOOL issubclass (Clase niño, los padres de clase) Usted tiene que fijar el delegado de su AssistanceNeededAtPopOverViewController que aparece la controllerview, como el nuevo GlobalPageSideDetailViewController. Aquí se establece el delegado de un controlador que acaba de instanciar y no el que poped el controlador. Puesto que usted esperaría que el botón naranja se mueva en algún momento, no puede forzarlo a centrarse. Baje la prioridad de 1000 a algo más bajo. Esto significa: Realmente me gustaría que se centró, pero no tiene que ser. Añada una restricción de distancia horizontal (principal / al final). Este código devuelve una instancia de AVCaptureDevice para el dispositivo predeterminado del tipo de medio dado. AVCaptureDevice inputDevice AVCaptureDevice defaultDeviceWithMediaType: AVMediaTypeVideo cambiar este código a. AVCaptureDevice inputDevice nil Dispositivos NSArray AVCaptureDevice devicesWithMediaType: AVMediaTypeVideo para (cámara AVCaptureDevice en dispositivos) Evite utilizar un bucle sincrónico. La función createFolder debe llamar de nuevo cuando su completa que callback debe iniciar la iteración de bucle siguiente. Verifique que dict objectForKey: infos no es NSNull - Crash puede estar aquí. El otro código parece correcto. También agregue - (void) deallocto su objeto y poner un punto de ruptura allí para verificar que el objeto no está siendo liberado antes de la asignación. código de ejemplo HMAC-SHA256: (NSData) HMACSHA256: clave (NSData) DataIn: (NSData) Notas clave: Añadir Security. framework al proyecto común Crypto se debe incluir: la importación ltCommonCrypto / CommonCrypto. hgt Se trata de datos de entrada y salida, se suman Cualquier conversión a las representaciones deseadas. Si observa el método que ha definido en la categoría de imágenes de Objective C, es el método de instancia y está intentando llamarlo usando la clase UIImage en swift. Básicamente, puede utilizar cualquiera de los dos enfoques siguientes, Cualquiera, self. backgroundImageView. image self. someImage. applyDarkEffect () // observe el método. Está utilizando la API incorrectamente. En primer lugar, la API de notificación de emisión ha cambiado después de iOS 8.0. Mi respuesta asumirá que desea dejar de apoyar a iOS 7.x y posteriores // Comprueba si la solicitud responde a la API introducido en IOS 8. Si (aplicación respondsToSelector: Selector (registerUserNotificationSettings :)) Interesante pregunta, nunca he aplicado automática Disposición a un campo de texto así que era curioso yo mismo. Mi solución fue escuchar el método NSWindowDelegate, - windowDidResize. Sobre eso, comprobaría para ver si el campo del texto era el primer respondedor. Si lo fuera, lo configuré para ser el primer respondedor. Actualmente, no se admite el uso de la autenticación de Facebook y Google proporcionada en la misma aplicación para Advanced Mobile Access. Sin embargo, con la opción Autenticación personalizada, puede escribir su propia lógica de autenticación personalizada dentro de su aplicación y la aplicación Node. js. Utilizando este método la aplicación podría manejar múltiples. Nota de lanzamiento de Xcode dice abajo cosa, Simulador Xcode 7.0 beta no es compatible con iOS 8.4 y anteriores tiempos de ejecución de simulador. (20699475) Refiera este acoplamiento para más Info. Sólo necesita enviar datos a su servidor. Puerto podría ser cualquier cosa que desee, debe ser 80. Anfitrión de su secuencia de comandos con una url de dominio para que pueda hacer pública la solicitud de red. Puede probar esta función: - (NSData) mensaje: (NSString) url postString: (NSString) urlString Retrotraiga esos cambios, añadir un archivo de InfoPlist. strings a su proyecto, localizar y luego añadir las claves necesarias para ello. Por ejemplo: CFBundleDisplayName Nombre de presentación de la aplicación CFBundleName Nombre del paquete de la aplicación. Sobre la base de los comentarios sobre la pregunta, usted mencionó que las palabras nunca cambiarán. Usted podría crear potencialmente un manojo entero de sentencias de if / else que comprueban cada palabra seleccionada contra cada palabra en una matriz. He puesto esto abajo como una alternativa más eficiente y debe esperanzadamente trabajar. Si necesita coincidir y puede utilizar el operador matches, que utiliza expresiones regulares. Ejemplo: NSArray variedad de manzana, muchacho, perro, gato NSPredicate pred NSPredicate predicateWithFormat: partidos independientes, perro NSLog (, matriz filteredArrayUsingPredicate: pred) Acerca de su cambio: predicateWithFormat no es como stringWithFormat, como lo hace algunos puestos de trabajo adicionales. He descubierto mi propio problema. Durante el movimiento del personaje a través del tacto, el SKScenes - (void) actualización: (NSTimeInterval) método currentTime ejecuta que los personajes clase método reproductor GPS: currentTime que rastrea la velocidad y la distancia. Heres el hipo, ese método fija la textura del carácter según la dirección que él está haciendo frente. Cada marco sigue la misma textura. Asegúrese de haber agregado MapKit Framework en su proyecto e intente seguir algunos tutoriales básicos de IOS8 Mapkit tutorial. Puede registrar su textField para un cambio de valor: addTarget textField acción de auto: selector forControlEvents (textFieldDidChange): UIControlEventEditingChanged y en función de textFieldDidChange actualizar su etiqueta: - (void) textFieldDidChange El shouldChangeCharactersInRange función se necesita más para tomar desisions si se permite próximo cambio o no. Yo resolví esto. Esto es lo que se hizo. En primer lugar había una limpieza seria de los archivos, arreglo, etc Había algunos objetos, atributos, etc que no tiene sentido. Renombrar cosas ayudó mucho ya que estaba causando mucha confusión. Había una relación uno-a-uno entre mi lista y. AppendString: es de NSMutableString, stringByAppendingString: es de NSString. El primero modifica la NSMutableString existente. Añade al final del receptor los caracteres de una cadena dada. El segundo devuelve una nueva cadena NSS que es una concatenación del receptor y del parámetro. Devuelve una nueva cadena hecha. Creo que quieres FBSDKSharePhotoContent y FBSDKShareDialog. Necesita configurar su contenido como una foto (s): UIImage Screengrab UIGraphicsGetImageFromCurrentImageContext () FBSDKSharePhotoContent FBSDKSharePhotoContent contenido alloc init content. photos FBSDKSharePhoto photoWithImage: Screengrab UserGenerated: SÍ // Suponiendo auto implementa ltFBSDKSharingDelegategt FBSDKShareAPI shareWithContent: delegado contenido: self. Posted de junio 9th, 2015 Uno de los mayores desafíos a la Unidad de Pruebas en Swift fue la configuración inicial. Antes de Swift 2, o tenías que hacer todo público o recordar agregar todos tus archivos a la prueba de destino (más sobre esto en mi blog en las pruebas en Swift aquí). Pero a partir de ayer, este problema de prueba molesto ha sido resuelto elegantemente Todo lo que necesitas hacer es: 1. Crear tu clase interna Acabo de crear un objeto modelo simple super simple en mi nuevo proyecto TestingTests con una función: De nuevo, observe que I8217m No añadir este modelo a mi objetivo de prueba y no hacer la clase o mi método público 2. Importación con testable En su objetivo de prueba, sólo tiene que importar el módulo que desea probar con la palabra clave testable: 3. Test Away That8217s, ahora puede Utilice todos los internos de su clase para los propósitos de las pruebas Gracias Equipo de Swift Disfrute del artículo Únete a más de 14.500 desarrolladores y entusiastas de Swift que reciben mis actualizaciones semanales. Estoy de acuerdo en que la prueba debe centrarse en público APIs / methods8230 PERO, técnicamente, con testable ahora puede probar métodos privados (requiere Xcode 7, Swift 2, y algo de creatividad). Ha habido algunos casos en los que realmente quería saber qué pasaría si, digamos, un método interno privado devolviera algo que normalmente no regresaría. Subclase él, anule el método, inyecte el objeto simulado, y allí usted va utilice el comprobable si es necesario conseguir un acceso más fácil. ¿Por qué shouldn8217t métodos privados de ser probado Debido a pruebas privadas hace refactorización un problema. Trate sus objetos como cajas negras al probar y entonces usted estará en el camino correcto. No veo en qué hace que la refactorización sea un problema. Por el contrario, la prueba de unidad asegurará que su refactorización se realice correctamente. Bueno, haganos saber como funciona eso ya para entonces. Bueno, en el joven y el retraso detrás de lenguajes como Swift: it8217s un desastre. En un lenguaje maduro como Erlang: es una felicidad. Hay 2 marcos diferentes incluidos, EUnit para la prueba de la caja blanca, Prueba común para la prueba de la caja negra. Cada una está optimizada para un caso de uso específico y cubre todo. También debe probar métodos privados: it8217s se llama prueba de caja blanca (en contraposición a prueba de caja negra). Una gran cantidad de procesamiento interno puede suceder en el ámbito privado y debe asegurarse de que cada paso va bien. El alcance de la función no debe ser utilizado como una decisión para no probarlo. Gracias por el artículo simple pero muy útil. Por cierto si alguien más tiene un error similar como lo hice 8220Failed importar header8221 puente, lo tengo de trabajar con este CocoaPods / CocoaPods / temas / 2695issuecomment-72873023 aplicación de cambio github / IOS con una mezcla de clases y ObjC Swift. Clase de prueba de unidad escrita en ObjC. ¿Es posible que la clase de prueba de unidad ObjC para acceder a las clases públicas Swift en el principal objetivo (I don8217t que asignarlos a tanto el objetivo principal y el destino de la prueba ObjC funcionaría) I8217m capaz de importar clases ObjC normales que aren8217t asignados a la destino de la prueba en la clase de prueba de unidad y I8217m capaz de crear un Swift clase clases de prueba de unidad y ObjC importación que de igual forma don8217t veces pertenecen blanco de prueba en él, pero no para el destino de la prueba ObjC importar clases Swift en el objetivo principal. El objetivo principal tiene el módulo define el módulo establecido en SÍ y su nombre del módulo se establece, que es la forma en que I8217m es capaz de importar las clases ObjC en la clase de prueba de unidad basada en Swift. importación-8220MainTargetModuleName Swift. h8221 trabajo won8217t ya que esta cabecera auto generado es el valor para el ajuste en el objetivo principal de la acumulación SWIFTOBJCINTERFACEHEADERNAME, y el destino de la prueba doesn8217t saber sobre él. TestingTests debe ser el nombre del nombre del módulo de producto que puede ser diferente del nombre de las carpetas como muestra la imagen anterior. Que puede llevar a buscar por qué don8217t reconocer el 8216TestingTest8217. Por favor, agrega una advertencia al respecto. Para ahorrar tiempo:) X Muy buena post:) X Gracias Todavía don8217t entender por qué tenemos que realizar este paso (por cierto, este) para el objetivo de las pruebas de unidad, pero el objetivo de las pruebas de interfaz de usuario funciona desde el primer momento. Niza Funcionó para iOS de lo que intenté con la aplicación de línea de comandos, pero didn8217t trabajo. Algunos problemas con el linker Gracias por esta hermosa introducción sencilla Natasha, lo he mencionado en mi proyecto GH Gracias por el post. En mi caso, se reconoce la clase pero mis funciones se reconocen como si fueran queryCurrentValue func privada (finalización: (JSON) Vacío - gt) cuando trato de llamarlo en mi prueba: var expectativa: XCTestExpectation self. expectationWithDescription (8220QueryCurrentValue Expectation8221 ) ViewController. queryCurrentValue XCTAssert (resultsJSON. isEmpty, resultados 8220Query regresó empty8221) XCTAssert (DataCache. defaultCache. readDataForKey (8220 (queryLink) 8221, 8220Data no Cached8221)) expectation. fulfill () waitForExpectationsWithTimeout (5.0, controlador: cero) me sale el error: 8216Use de instancia miembro de 8216queryHistoricValues8217 del tipo 8216ViewController8217 hizo que significas para utilizar un valor de tipo 8216ViewController8217 instead8217 Su esperando ViewController como parámetro a la función Sólo una nota adicional, cuando hago clic en BitLive (importación), sólo veo las clases públicas De mi aplicación. No estoy seguro de si este es el comportamiento esperado o algo es a pescado. La clase 8220ViewController8221 se reconoce a ella thoughFugiat cursus commodo dapibus, ac Tellus, Mauris sentarse condim eser ntumsi nibh, UUM un vitaes Justo amet Amets Risus ONU. Posi sectetut amet fermntum orem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia nons. Fugiat dapibus, tellus ac cursus commodo, mauris sentar condim eser ntumsi nibh, uu un justo vitaes amet risus amets un. Posi sectetut amet fermntum orem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia nons. Fugiat dapibus, tellus ac cursus commodo, mauris sentar condim eser ntumsi nibh, uu un justo vitaes amet risus amets un. Posi sectetut amet fermntum orem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia nons. Fugiat dapibus, tellus ac cursus commodo, mauris sentar condim eser ntumsi nibh, uu un justo vitaes amet risus amets un. Posi sectetut amet fermntum orem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia nons.
Whipsawed Tiempo real después de las horas Pre-Market News Resumen de las cotizaciones Resumen Cotizaciones interactivas Configuración predeterminada Tenga en cuenta que una vez que haga su selección, se aplicará a todas las futuras visitas a NASDAQ. Si, en cualquier momento, está interesado en volver a nuestra configuración predeterminada, seleccione Ajuste predeterminado anterior. Si tiene alguna pregunta o algún problema al cambiar la configuración predeterminada, envíe un correo electrónico a isfeedbacknasdaq. Confirme su selección: Ha seleccionado cambiar su configuración predeterminada para la Búsqueda de cotizaciones. Ahora será su página de destino predeterminada a menos que cambie de nuevo la configuración o elimine las cookies. ¿Está seguro de que desea cambiar su configuración? Tenemos un favor que pedir. Por favor, deshabilite su bloqueador de anuncios (o actualice sus configuraciones para asegurarse de que se habilitan javascript y cookies), para que podamos seguir proporc...
Comments
Post a Comment