问题列表 - 第33306页

在iOS中解析XML /'屏幕抓取'的最佳方法是什么?UIWebview还是NSXMLParser?

我正在创建一个需要从网页获取一些数据的iOS应用程序.我的第一个是使用NSXMLParser initWithContentsOfURL:和解析NSXMLParser代表的HTML .然而,这种方法似乎很快就会变得痛苦(例如,如果改变了HTML,我将不得不重写解析代码,这可能很尴尬).

看到我正在加载一个网页,我也看了一下UIWebView.看起来UIWebView可能是要走的路.stringByEvaluatingJavaScriptFromString:似乎是一种非常方便的方法来提取数据,并允许将javascript存储在一个单独的文件中,如果HTML发生变化,该文件很容易编辑.然而,使用UIWebView似乎有点hacky(看作UIWebView是一个UIView子类,它可能会阻止主线程,并且文档说javascript有10MB的限制).

在我遇到困难之前,有没有人对解析XML/HTML有任何建议?

更新:

我写了一篇关于我的解决方案的博客文章:iOS中的HTML解析/屏幕抓取

iphone screen-scraping uiwebview nsxmlparser ios

8
推荐指数
2
解决办法
1万
查看次数

难以阅读两行代码

如何分析以下两行代码?

w += /* 28 + */ y % 4 == 0 && (y % 100 || y % 400 ==0);
Run Code Online (Sandbox Code Playgroud)

 w += 30 + (i % 2 ^ i >= 8);
Run Code Online (Sandbox Code Playgroud)

c c++

2
推荐指数
1
解决办法
197
查看次数

将make_shared与受保护的构造函数+抽象接口一起使用

给定一个抽象接口和从该接口派生的实现,其中构造函数受到保护(这些对象的创建只能从类工厂中获得 - 实现DI模式),如何在工厂函数中使用make_shared?

例如:

class IInterface
{    
public:    
    virtual void Method() = 0;
};

class InterfaceImpl : public IInterface
{
public:
    virtual void Method() {}

protected:    
    InterfaceImpl() {}    
};

std::shared_ptr<IInterface> Create()
{
    std::shared_ptr<IInterface> object = std:: make_shared<InterfaceImpl>();    
    return object;
}
Run Code Online (Sandbox Code Playgroud)

make_shared显然无法访问InterfaceImpl中的受保护构造函数,或者实际上是在IInterface中,给出了以下错误


error C2248: 'InterfaceImpl::InterfaceImpl' : cannot access protected member declared in class 'InterfaceImpl'
Run Code Online (Sandbox Code Playgroud)

所以在这里阅读(问题:如何使boost :: make_shared成为我班级的朋友),我尝试将以下内容放入实现类中:


friend std::shared_ptr<InterfaceImpl> std::make_shared<InterfaceImpl>();
Run Code Online (Sandbox Code Playgroud)

它仍然无法编译.那么我也将另一个放入IInterface类.仍然没有快乐.我在这做错了什么?

编辑:用于编译的完整源文件,与"朋友"...

#include <memory>

class IInterface
{    
public:    
    friend std::shared_ptr&lt;IInterface> Create();     
    virtual void Method() = 0;
};

class …
Run Code Online (Sandbox Code Playgroud)

c++ constructor protected visual-c++-2010 make-shared

5
推荐指数
1
解决办法
6546
查看次数

是否有一种编程语言,其中类型可以通过值进行参数化?

参数化类型(如C++模板)是一件好事,但大多数时候它们只能通过其他类型进行参数化.

但是,在C++中有一个特殊情况,可以通过整数对模板进行参数化.例如,固定长度数组是一个典型的用例:

template<typename T, int SIZE> class FixedArray 
{ 
    T m_values[SIZE]; 

public: 
    int getElementCount() const { return SIZE; }

    T operator[] (int i) const { 
        if (i<0 || i>=SIZE) 
            throw;
        else 
            return m_values[i]; 
    }  
};

void f()
{
    FixedArray<float, 5> float_array; // Declares a fixed array of 5 floats. 
    //The size is known at compile time, and values are allocated on the stack.
}
Run Code Online (Sandbox Code Playgroud)

在C++中只允许使用常量整数和指针,但我认为使用任何值进行参数化(浮点数,类实例等)可能会很有趣.这可以允许在编译时表达前提条件(通常在文档中非正式指定),并在运行时自动检查它们.例如,这是假设的C++方言中的"Interval"模板:

// Interval of type T between TMin and TMax. 
template<typename T, T TMin, T TMax> …
Run Code Online (Sandbox Code Playgroud)

type-systems programming-languages

13
推荐指数
2
解决办法
393
查看次数

git add.vs git commit -a

有什么区别:

  • git add .
  • git commit -a

我应该做两件事,还是多余的?

git version-control git-add git-commit git-commands

96
推荐指数
2
解决办法
5万
查看次数

如何使用NSTask授予权限 - objective-c

我需要基本上做一个"sudo"但是,我需要给我的NSTask代码提供这种权限.这可能吗?

谢谢,以利亚

permissions sudo objective-c nstask

6
推荐指数
2
解决办法
7259
查看次数

G ++ 4.5错误:无法诊断缩小初始化列表

我尝试了以下代码:

int main()
{
   int x {23.22};
}
Run Code Online (Sandbox Code Playgroud)

其中包括需要缩小的初始化,但代码编译正常,没有任何错误或警告.另一方面,以下代码给出错误:

int main()
{
   int x[]{23.22};
}
Run Code Online (Sandbox Code Playgroud)

我发现了一个bug还是什么?

PS:我目前正在使用GCC 4.5.0

c++ g++ narrowing c++11

6
推荐指数
1
解决办法
316
查看次数

Java Thread每隔X秒

以给定速率安排一段Java代码的最简单方法是什么?

java

38
推荐指数
4
解决办法
4万
查看次数

奇怪的铸造行为.无法将object(int)强制转换为long

我有以下代码:

int intNumber1 = 100;
object intNumber2 = 100;
bool areNumberOfTheSameType = intNumber1.GetType() == intNumber2.GetType(); // TRUE
bool areEqual = intNumber1.Equals(intNumber2); // TRUE

long longNumber1 = (long) intNumber1; // OK
long longNumber2 = (long) intNumber2; // InvalidCastException. Why?
Run Code Online (Sandbox Code Playgroud)

为什么第二次演员不工作?我意识到这可能是因为对象没有显式转换为long,但如果我们在运行时查看它的类型就是System.Int32.

如果我使用vardynamic代替object,它的工作原理.

有什么想法吗?

.net c# clr

44
推荐指数
2
解决办法
3万
查看次数

Android计数大小为INT Array

我有一个像这样的数组:

 private static int[] f_arme = {
     R.drawable.frankiearmevor_0001, 
     R.drawable.frankiearmevor_0002, 
     R.drawable.frankiearmevor_0003, 
     R.drawable.frankiearmevor_0004, 
     R.drawable.frankiearmevor_0005
Run Code Online (Sandbox Code Playgroud)

}

我如何获得该数组的大小(f_arme)?= 5我尝试了f_arme.size()但得到"无法调用数组类型int []上的size()

android

0
推荐指数
1
解决办法
1万
查看次数