#objective-c #compiler-errors #swift
#objective-c #ошибки компилятора #swift
Вопрос:
У меня есть этот HTML,
<div class="header1" style="text-align: center;">
<div class="s">
<center>
<table>
<tr>
<td>
<ul style="position: relative;">
<li>
<a>
<p>
Apple Kid
</p>
и я хочу получить слово «Apple kid» в качестве вывода с помощью Swift.
Я использовал для этого фреймворк TFHpple, но после добавления всех необходимых вещей он выдает ошибку. Как в файле Objective-C
the XPathQuery.h
//
// XPathQuery.h
// FuelFinder
//
// Created by Matt Gallagher on 4/08/08.
// Copyright 2008 __MyCompanyName__. All rights reserved.
//
NSArray *PerformHTMLXPathQuery(NSData *document, NSString *query);
NSArray *PerformHTMLXPathQueryWithEncoding(NSData *document, NSString *query,NSString *encoding);
NSArray *PerformXMLXPathQuery(NSData *document, NSString *query);
NSArray *PerformXMLXPathQueryWithEncoding(NSData *document, NSString *query,NSString *encoding);
Он показывает ошибку в этих функциях о неизвестном типе.
XpathQuery.m
//
// XPathQuery.m
// FuelFinder
//
// Created by Matt Gallagher on 4/08/08.
// Copyright 2008 __MyCompanyName__. All rights reserved.
//
#import "XPathQuery.h"
#import <libxml/tree.h>
#import <libxml/parser.h>
#import <libxml/HTMLparser.h>
#import <libxml/xpath.h>
#import <libxml/xpathInternals.h>
NSDictionary *DictionaryForNode(xmlNodePtr currentNode, NSMutableDictionary *parentResult,BOOL parentContent);
NSArray *PerformXPathQuery(xmlDocPtr doc, NSString *query);
Ответ №1:
Вы должны поделиться точными ошибками, которые вы получили, но у меня не было проблем с использованием TFHpple из Swift. Как и в случае с Objective-C, вы должны
-
убедитесь, что вы ссылаетесь на
libxml
библиотеку на этапах сборки -
добавьте
$(SDKROOT)/usr/include/libxml2
в свой заголовок пути поиска в настройках сборки
Смотрите инструкции по установке в книге Вендерлиха «Как анализировать HTML на iOS» или в Cocoa с использованием libxml2 от Love для синтаксического анализа XML и запросов XPath в Cocoa.
Когда вы добавляете источник TFHpple в свой проект, вам должно быть предложено создать связующий заголовок. Сделайте это, а затем добавьте #import "TFHpple"
к нему. Для получения дополнительной информации см. Раздел Импорта Objective-C в Swift раздела Swift и Objective-C в той же главе проекта руководства по использованию Swift с Cocoa и Objective-C.
Как только вы это сделаете, вы сможете использовать TFHpple без инцидентов со стороны Swift.