小编arn*_*rne的帖子

如何使用对象属性的谓词过滤NSArray

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
  [self.map removeAnnotations:self.map.annotations];
  if ([textField isEqual:self.searchText]) {
      NSPredicate *bPredicate = 
      [NSPredicate predicateWithFormat:@"name contains[c],  %@",self.searchText.text];

      self.filteredArray = [self.hotelArray filteredArrayUsingPredicate:bPredicate];
      NSLog(@" HEARE %@",self.filteredArray);
      [self markAllHotels];
  }
  return YES;
}
Run Code Online (Sandbox Code Playgroud)

hotelArray并且filteredArrayNSArray.

hotelArray有一个类型的对象hotel,其中hotel有一个属性name.

问题:我想筛选hotelArray根据hotel.namehotel.name中输入匹配的文本searchText[文本字段],但我得到一个空self.filteredArray.

iphone objective-c ios

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

从 setup.py 迁移到 pyproject.toml:如何指定包名称?

我目前正在尝试将我们的内部项目从setup.py( pyproject.tomlPEP -518 ) 移走。如果可能的话,我不想使用构建后端特定的配置,即使我确实[build-system]通过require“ing”在该部分中指定了后端。

这些pyproject.toml文件或多或少是setup.py文件的直接翻译,元数据根据PEP-621设置,包括dependencies. 我们用于setuptools_scm确定版本,因此该version字段最终位于该dynamic部分中。

我们曾经在文件中设置packages参数,但我在 中找不到任何相应的字段,所以我干脆省略了它。setupsetup.pypyproject.toml

当使用 构建项目时python3 -m build .,我最终得到一个名为 的包UNKNOWN,即使我name[project]部分中设置了字段。看来这在构建的早期就中断了:

$ python -m build .
* Creating virtualenv isolated environment...
* Installing packages in isolated environment... (setuptools, setuptools_scm[toml]>=6.2, wheel)
* Getting dependencies for sdist...
running egg_info
writing UNKNOWN.egg-info/PKG-INFO
....
Run Code Online (Sandbox Code Playgroud)

我正在使用 python …

python setup.py pyproject.toml

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

lupdate错误:使用未知的命名空间/类进行限定

我使用lupdate v4.7.2遇到了一个非常奇怪的错误.我收到了错误消息

module/foo.cpp:6:使用unknown namespace/class :: foo进行限定

对于一个有大约50个班级的项目中的几个班级.我将问题归结为一个简单的例子:

SRC/project.pro:

QT       += core
TARGET = test
TEMPLATE = app

SOURCES += main.cpp \
           screen.cpp

HEADERS += screen.h

TRANSLATIONS += de.ts
Run Code Online (Sandbox Code Playgroud)

SRC /模块/ foo.h中:

namespace sp {
class foo {
    initWidgets();
};
} // namespace sp
Run Code Online (Sandbox Code Playgroud)

SRC /模块/ Foo.cpp中:

#include <QString>
#include "module/foo.h"

namespace sp {
    foo::initWidgets() {
    QString bar = tr("bar");
}
} // namespace sp
Run Code Online (Sandbox Code Playgroud)

main.cpp中有一个空的main函数.

代码编译(除非我可能在这里产生任何copypasta错误),所以语法基本上是正确的.

qt translation namespaces internationalization

9
推荐指数
1
解决办法
3886
查看次数

make:仅在单个目标的子目录中禁用并行构建

我有一个相当庞大的autotools驱动的项目,它位于一个目录树中,该目录树由许多带有子目录的目录组成.它有一个目标check(在每个子目录和主目录中)执行大量自动化测试.该check目标是递归构建.

并行构建和测试(通过-jmake选项)适用于大多数目录.但是有一个目录包含并行执行时不起作用的测试(定时灵敏度),但是在串行运行时通过.

问题是:有没有办法强制make check在这一个子目录中串行构建目标,同时并行构建其他所有子目录?

makefile build autotools

9
推荐指数
2
解决办法
4329
查看次数

在log4cxx中使用utf-8字符

我需要能够使用带有log4cxx的utf-8编码字符串.我可以正常打印字符串std::cout(字符显示正确).使用log4cxx,即将字符串放入LOG4CXX_DEBUG()宏中,ConsoleAppender输出"??" 而不是特殊的角色.我找到了一个解决方案

LOG4CXX_DECODE_CHAR(logstring, str);
LOG4CXX_DEBUG(logstring);
Run Code Online (Sandbox Code Playgroud)

str我的输入字符串在哪里,但这不起作用.任何人都知道这可能如何工作?我谷歌了一下,但我找不到任何有用的东西.

c++ logging log4cxx

7
推荐指数
1
解决办法
1419
查看次数

QWidget更新事件但没有可视更新

在Mint Linux 12上使用Qt4.8,我实现了一个包含QTableView显示模型内容的简单窗口.模型数据不断更新(记录消息),并dataChanged()定期发出信号(即每100ms).

我看到的问题是桌面上的视觉更新.

我在窗口上安装了一个事件过滤器来计算updateRequest类型事件,这应该触发一个窗口小部件重绘(也可以在子窗口小部件上,即tableView).它们之间的平均时间约为170毫秒,标准偏差约为90毫秒(我猜这是相当大的).然而,感知的视觉更新率仅为每秒两到三次,我想知道为什么.似乎并非所有updateRequest事件都触发窗口小部件重绘或窗口系统吞下视觉更新.

作为第二次测试,我强制窗口通过调用repaintupdate每100ms 更新自己.使用时repaint,我看到了相应的updateRequest类型事件增加和间隙标准差的减少; 用update,数量没有增加.但是,在这两种情况下,感知更新率只有适度增加.

另外:有没有一个很好的方法来衡量一个小部件实际真正重新绘制的频率,而不必重载它的paintEvent处理程序?也许来自QTest哪里?


更新:我将事件过滤器扩展为catch paintEvent-type事件.对于> 1000种updateRequest类型的事件,只有一位数的数字.

c++ qt qwidget qtableview

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

基类复制构造函数的可见性问题

我有一个类(让我们base暂时调用它)具有受保护的接口,包括受保护的构造函数等.base返回base值的实例的一些函数:

class base {
protected:
    base() {}
    base (base const &other) {}  // line 6
    base foo () {
        base ret;
        return ret;
    }
};
Run Code Online (Sandbox Code Playgroud)

这些函数包装在派生类中,以返回派生类型,如下所示:

class derived : public base {
private:
    derived(base const &b) : base(b) {}
public:
    derived() : base() {}
    derived foo() {
        derived d(base::foo());  // line 21
        return d;
    }
};
Run Code Online (Sandbox Code Playgroud)

为了便于从base返回类型转换为derived返回类型,我提供了一个私有构造函数derived来处理它.

使用gcc 4.1.2在Centos 5.8上进行编译会产生以下错误:

test.cpp: In member function ‘derived derived::foo()’:
test.cpp:6: error: …
Run Code Online (Sandbox Code Playgroud)

c++ gcc visibility copy-constructor

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

git describe --tags 不适用于 Jenkins 管道构建

我见过这个问题,它朝着类似的方向发展,但并不完全。问题在于标签没有正确推送。

我目前正在使用 Jenkins 构建我的 python 项目setuptools_scm,它基本上用于git describe获取(或多或少)合理的版本号,即使不在标签上。管道是使用 JobDSL 中的种子作业定义的,如下所示(缩写为了解要点):

import BuildProjects

BuildProjects.build_projects.each { def bproject ->
   multibranchPipelineJob("tool/${bproject}") {
      branchSources {
         branchSource {
            source {
               git {
                  id('tool_${bproject}')
                  remote("${BuildProjects.scmBaseLocation}/${bproject}.git")
                  credentialsId(BuildProjects.scmUser)
                  traits {
                     gitBranchDiscovery()
                     gitTagDiscovery()
                     cloneOptionTrait {
                        extension {
                           shallow(false)
                           noTags(false)
                           reference('grmblwrx')
                           timeout(1)
                        }
                     }
                  }
               }
            }
         }
      }

   }
}
Run Code Online (Sandbox Code Playgroud)

一些配置值取自BuildProjects.

运行 jenkins 时,我看到它获取标签:

 > git fetch --tags --progress -- ssh://git@git.my-company.net/tools.git +refs/heads/*:refs/remotes/origin/* # timeout=1
Run Code Online (Sandbox Code Playgroud)

事实上,当我使用 Jenkinsfile 输出标签时,我可以看到标签

sh "git tag"
Run Code Online (Sandbox Code Playgroud)

堵塞。但是使用

sh …
Run Code Online (Sandbox Code Playgroud)

git jenkins jenkins-job-dsl

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

使用带有new []的QSharedPointer会在valgrind中产生"mismatched free()/ delete/delete []"

我有以下代码:

QPair<QSharedPointer<unsigned int>, int> someclass::somefunction() {
    int siz = data_size();
    QSharedPointer<unsigned int> buffer(new unsigned int[siz]);

    // Fill the buffer...

    return qMakePair(buffer, siz);
}
Run Code Online (Sandbox Code Playgroud)

在某些时候,QSharedPointer此函数返回的内容将超出范围,构造函数中设置的指针将被释放.使用valgrind 3.6.1,我得到一个"不匹配的free()/ delete/delete []"错误.我的使用是否有任何问题,QSharedPointer或者我是否必须忍受这种valgrind警告?

c++ qt smart-pointers qsharedpointer

4
推荐指数
1
解决办法
1844
查看次数

警告:有符号和无符号整数表达式之间的比较

我在codepad.org上运行以下代码,我收到此错误."在成员函数'double Xchange :: getprice(std :: string)'中:第87行:警告:有符号和无符号整数表达式之间的比较"

这是我的代码:

#include <iostream>
#include <vector>
#include <string>

using namespace std;

class Xchange
{
public:
    Xchange();//does nothing (?)

    double getprice(string symbol);

private:
    vector <Stock> stocks;
};

double Xchange::getprice(string symbol)
{
    for(int i=0; i < stocks.size(); i++) {
        if(stocks[i].getsymbol()==symbol) {
            return stocks[i].getprice();
        }
    }

    return -1; //means not found
}
Run Code Online (Sandbox Code Playgroud)

c++ class

4
推荐指数
1
解决办法
5939
查看次数

参数化查询中的参数计数不匹配

出于性能原因,我在代码中使用了大量参数化查询.简而言之,其中一些是有效的,有些则不然.

我在构建数据库包装器时初始化查询,如下所示:

QString querystring = QString("SELECT somevalue FROM sometable "
                      "WHERE one_feature = :one_feature AND other_feature = :other_feature ");
myquery = QSqlQuery(db);
myquery.setForwardOnly(true);
myquery.prepare(querystring);
Run Code Online (Sandbox Code Playgroud)

myqueryQSqlQuery我的数据库包装器的成员变量.稍后,在想要使用此查询的函数中,我执行类似的操作

int db_wrapper::fetch_some_value (int arg1, int arg2) {
    myquery.clear();
    myquery.bindValue(":one_feature", arg1);
    myquery.bindValue(":other_feature", arg2);

    qDebug() << "Bound values: " << myquery.boundValues();

    bool OK = myquery.exec();
    if (!OK) {
        int number = myquery.lastError().number();
        qDebug() << "db error " << number;
        qDebug() << "db error " << myquery.lastError().text();

#ifdef USE_EXCEPTIONS
        throw "Could not fetch some_value!";
#endif …
Run Code Online (Sandbox Code Playgroud)

c++ sqlite qt qtsql

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

否则在#define宏指令中...错误:'if'之前的预期表达式

我不能if/else, if/else if/else#define指令中使用吗?下面的代码给出错误:

#include <stdio.h>

#define makro(a) if(a%2 == 0) 1 else 0;

int main(void) {
    // your code goes here
    int a = makro(5);
    printf("%d\n", a);
    return 0;
}

prog.c: In function ‘main’:
prog.c:3:18: error: expected expression before ‘if’
 #define makro(a) if(a%2 == 0) 1 else 0;
                  ^
prog.c:7:10: note: in expansion of macro ‘makro’
  int a = makro(5);
          ^
Run Code Online (Sandbox Code Playgroud)

c macros

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