小编pbu*_*eit的帖子

Swift获取请求返回结果中的空项

我有一个项目,我需要做一个获取请求,获取核心数据实体的最新"更新"日期.当我实际检查查询返回的结果时,我看到一些相当奇怪的行为.除了包含日期的"正确"结果外,结果还包括空字典项.无论基础数据是什么样的,每次都会发生这种情况.更奇怪的是,如果我打开xcode中的sql登录并对sqllite db执行记录查询,它会生成正确的结果而没有额外的条目.我不太确定我在这里做错了什么,任何帮助都会受到赞赏.

构建和执行查询的函数:

func queryForContactDate(context:NSManagedObjectContext) -> AnyObject?
{

    var expressionDescriptions = [AnyObject]();

    let expressionDescription = NSExpressionDescription()

    // Name the column
    expressionDescription.name = "maxUpdated"
    // Use an expression to specify what aggregate action we want to take and
    // on which column. In this case max on the update_at column
    expressionDescription.expression = NSExpression(format: "@max.updated_at")
    // Specify the return type we expect
    expressionDescription.expressionResultType = .DateAttributeType
    // Append the description to our array
    expressionDescriptions.append(expressionDescription)

    // Build out our fetch request the usual way …
Run Code Online (Sandbox Code Playgroud)

core-data aggregate-functions nsfetchrequest swift

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

自托管的Gitlab服务器不可访问

我在osx(10.11)服务器上运行的gitlab实例遇到一些重大问题。这是从源代码构建的自托管gitlab-ce。直到上周,当我尝试从8.5版本升级到8.6时,它的运行情况都很好。在遇到一些构建问题后,我最终回滚到8.5,但是配置中的某些内容在此过程中被破坏了。

目前,如果我明确包含nginx端口,则可以在osx服务器上运行的浏览器中打开gitlab网站,然后才能访问它。如果尝试通过带有或不带有显式端口的远程浏览器访问它,则会收到“无法访问此站点”错误。我已经尝试了所有可以想到的方法来按工作顺序进行搅拌,但似乎无济于事。有很多潜在的配置文件和选项,我什至不知道在哪里看。

任何帮助,将不胜感激。

更新: 通过一些额外的尝试和错误,我可以在本地访问我的gitlab而无需指定端口。但是,不幸的是,远程访问仍然顽固地中断了。我真正需要的是在osx上为gitlab运行的NGINX配置的示例。

Update 2.0 远程访问问题原来是防火墙问题。修复使我充满了生机。我可以通过指定端口来访问gitlab,但是我不知道如何设置代理以使用默认Web端口(80)。我知道绑定到该端口需要root访问权,但是即使使用sudo,也会出现“权限被拒绝”错误。

更新第三个更新 按照建议,我在此处发布了另一个问题:https : //serverfault.com/questions/960051/nginx-unable-to-bind-to-port-80-in-osx-server,因为我的问题已经超出了原始问题的范围。

webserver nginx gitlab osx-elcapitan

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

将UISearchController添加到非表视图

我在IOS8中使用新的UISearchController时遇到了麻烦.到目前为止,我发现的每个例子都使用搜索栏作为UITableView的标题视图.当搜索栏需要在其他地方显示时,你会怎么做?例如,将搜索栏放在表格之外以防止其滚动?用它来像UICollectionView一样呢?

我在这里错过了什么吗?这似乎不应该那么复杂.

uisearchbar ios8 uisearchcontroller

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

解决Git索引过小的错误

我最近将托管我们代码仓库的开发服务器更新到了较新版本的Ubuntu(18.04)。作为该过程的一部分,git已升级到版本2.23.0。部署代码的实际应用服务器需要能够从git存储库中签出最新更改。当我尝试在这些服务器上执行“ git fetch”操作时,我收到一长串如下所示的错误:

错误:索引文件./objects/pack/._pack-5b58f700fea57ee6f8ff29514a376b945bb1c8a9.idx太小

我进行了一些挖掘,以查看是否可以提出解决方案,但到目前为止,该方法已奏效。我尝试了在这里列出的答案:git错误:“索引文件太小”。既未解决问题,也git index-packgit repack -a -d解决。我什至尝试从应用程序服务器中删除文件的本地副本,并使用git clone重新安装。克隆本身引发了一堆类似于以前的错误

远程:错误:索引文件./objects/pack/._pack-5b58f700fea57ee6f8ff29514a376b945bb1c8a9.idx太小

在这一点上,我没有想法。任何帮助,将不胜感激。

编辑:的输出du -h表明有足够的磁盘空间。

linux git ubuntu debian gitlab-omnibus

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

从 Swift 访问 Objective-C 结构

我正在开发一个混合了 swift 和 obj-c 代码的 ios 应用程序。我的 obj-c 模型类之一定义了一个包含字符串的结构,以帮助转换为字典并返回。我有桥接头设置,我可以在 swift 类中访问 Objective-C 类中定义的方法。我不知道如何访问静态结构来获取我的属性字符串。这是我的 .h 和 .m 文件的片段:

订单项.h

extern const struct OrderItemAttributes {
    __unsafe_unretained NSString *created;
    __unsafe_unretained NSString *created_by_id;
    __unsafe_unretained NSString *device_deleted;
} OrderItemAttributes;

@interface OrderItem : NSManagedObject {}
@property (nonatomic, strong) NSDate* created;
@end
Run Code Online (Sandbox Code Playgroud)

订单项.m

const struct OrderItemAttributes OrderItemAttributes = {
    .created = @"created",
    .created_by_id = @"created_by_id",
    .device_deleted = @"device_deleted",
};

@implementation OrderItem
@dynamic created;
@end
Run Code Online (Sandbox Code Playgroud)

我以为我可以简单地使用

OrderItem.OrderItemAttributes.created

访问属性字符串,但 swift 不接受该语法。有没有办法在不对我的 Objective-C 代码进行重大更改的情况下做我想做的事情?

struct constants objective-c swift

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

在 Swift 中使用返回 Optional 或 Throw 的 Objective-C 函数

我正在开发一个需要与现有 Objective-C api 交互的 swift 项目。不过,我在使用其中一个功能时遇到了一些障碍。在objective-c 头文件(OrderItem.h)中,我有这个函数定义:

+ (NSString *_Nullable)getOptional:(NSString *_Nonnull)foo error:(NSError *_Nullable *_Nullable)error;
Run Code Online (Sandbox Code Playgroud)

特别要注意最后一个参数;因为它是一个错误指针,在 swift 中调用此方法将需要包含在错误处理程序中(do .. catch)。

这是相应的 .m 文件:

+ (NSString *)getOptional:(NSString *)foo error:(NSError *__autoreleasing *)error
{
    if([foo isEqualToString:@"abc"])
    {
        return @"abc item";
    }
    else
    {
        if([foo isEqualToString:@"xyz"])
        {
            *error = [[NSError alloc] init];
        }
        return nil;
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的 swift 文件中,我添加了以下代码:

func testGetOptional()
{
    do
    {
        var result:NSString? = try OrderItem.getOptional("abc");
        XCTAssertNotNil(result);
        result = try OrderItem.getOptional("123");
        XCTAssertNil(result);

    }
    catch let error as NSError
    {
        XCTFail("OrderItem lookup …
Run Code Online (Sandbox Code Playgroud)

objective-c throw optional swift bridging-header

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

SVN服务器无响应写请求

我正在尝试使用apache Web服务器设置SVN repo.我能够在没有太多问题的情况下创建和配置repo.我可以通过浏览器访问repo,所以我认为apache配置是正确的.当我尝试进行初始提交时出现问题.当我在终端中运行commit命令时,它会在返回之前挂起几分钟svn: E175012: Connection timed out.初始提交是一个小于100kb的单个文件.更奇怪的是,在命令超时后,似乎在我的系统上创建了一个使用90%CPU的HTTPd进程.

我做了一些研究,看看我是否可以自己解决问题,但到目前为止还没有任何效果.我能够使用Charles Proxy监视HTTP请求,看起来svn客户端正在发送POST,但它从未接收到来自服务器的响应.在默认超时(10分钟)后,客户端放弃并显示超时错误.

我也尝试使用SvnServe而不是apache来设置repo .我能够使用svn://读取和写入repo.但是,我正在处理的代码希望通过HTTP与repo进行通信,所以我仍然需要弄清楚apache的问题.

有谁知道可能导致这个问题的原因是什么?我可以采取其他任何措施来解决问题吗?

[更新]

我检查了我的apache服务器的日志.这是我在运行提交时看到的内容:

_myip_ - - [28/Feb/2017:10:04:04 -0500] "OPTIONS /my/repo HTTP/1.1" 200 190 "-" "SVN/1.9.5 (x86_64-apple-darwin16.1.0) serf/1.3.9" _myip_ - - [28/Feb/2017:10:04:04 -0500] "OPTIONS /my/repo HTTP/1.1" 200 97 "-" "SVN/1.9.5 (x86_64-apple-darwin16.1.0) serf/1.3.9"

[更新2] 为了进一步缩小此问题的原因,我尝试在Linux虚拟机中设置不同的apache服务器.该服务器运行良好,我甚至能够从osx读取/写入它.所以看起来问题是OSX上的apache服务器特有的.

svn apache config haproxy ios

5
推荐指数
0
解决办法
291
查看次数

Jboss Wildfly 中禁止的依赖项

我正在将遗留应用程序从 Jboss 6 迁移到 Wildfly 18。当我尝试通过 maven 打包我的应用程序时,出现错误:

[WARNING] Rule 0: org.apache.maven.plugins.enforcer.BannedDependencies failed with message:
Found Banned Dependency: javax.inject:javax.inject:jar:1
Found Banned Dependency: javax.activation:activation:jar:1.1
Found Banned Dependency: stax:stax-api:jar:1.0.1
Found Banned Dependency: org.slf4j:slf4j-log4j12:jar:1.7.25
Found Banned Dependency: com.sun.mail:javax.mail:jar:1.5.6
Found Banned Dependency: com.google.inject:guice:jar:4.2.3
Use 'mvn dependency:tree' to locate the source of the banned dependencies.
[WARNING] Rule 1: org.apache.maven.plugins.enforcer.DependencyConvergence failed with message:
Failed while enforcing releasability. See above detailed error message.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  7.775 s
[INFO] Finished …
Run Code Online (Sandbox Code Playgroud)

jboss guice maven wildfly

5
推荐指数
0
解决办法
177
查看次数

使用'resolve'在routeProvider中等待查询结果

我无法弄清楚如何让routeProvider等到远程调用返回.我见过的最好的解决方案是这里的例子:延迟角度路线变化 .不幸的是,当我厌倦将该示例应用于我自己的代码时,绑定将在数据实际加载之前触发.有没有人知道另一个使用角度1.1.5的新资源语法的例子($ promise可以直接访问)?

这是我的代码的样子:

var productModule = angular.module('productModule', ['ngResource', 'ngLocale']).
config(['$routeProvider', function($routeProvider) {

    $routeProvider.when('/view1', {templateUrl: 'partials/partial1.html',
        controller: 'ResourceCtrl as appController' ,
        resolve:
        {
            productData: function($resource)
            {
                console.log(["calling service"]);
               return $resource(Services.ProductServices.PATH).query(null,
                   function(data){
                       console.log(["call succeeded"]);
                   },
                   function(data){
                       console.log(["calling failed"]);
                   }).$promise;
            }
        }
    });
    $routeProvider.when('/view2', {templateUrl: 'partials/partial2.html'});
    $routeProvider.otherwise({redirectTo: '/view1'});
}]) ;  

productModule.controller('ResourceCtrl','$scope','productData',function($scope,productData)  {

    $scope.productData = productData;
    console.log(["promise resolved"]);
}]);
Run Code Online (Sandbox Code Playgroud)

如果我运行该代码,控制台将显示:

  • 呼叫服务
  • 承诺解决了
  • 呼叫成功

javascript promise angularjs angularjs-routing

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

Hibernate 验证导致错误的列类型错误

我在应用程序部署期间遇到了一些休眠验证问题。我有两个类,Frame 和 FrameReleasePlan,它们以 OneToOne 关系关联。在数据库方面,关系是单向的。frame_release_planss 表有一个 NUMERIC(19,0) 类型的“frame_id”列,它是指向框架表的“id”列的外键。当我尝试部署时,架构验证失败并出现以下错误:

无法构建 Hibernate SessionFactory。引起原因:org.hibernate.tool.schema.spi.SchemaManagementException:架构验证:表 [frame_release_plans] 中的列 [frame_id] 中遇到错误的列类型;找到了 [numeric (Types#NUMERIC)],但期望 [bigint (Types#BIGINT)]"}

我尝试使用 @JoinColumn 注释的“columnDefinition”参数手动指定列类型,但没有什么区别。有没有办法通过将数据库列更改为“bigint”来解决此问题?

持久性.xml

<persistence version="2.1"
   xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
        http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
    <persistence-unit name="ProductPersistenceUnit"
        transaction-type="JTA">
        <properties>
            <property name="hibernate.dialect" value="org.hibernate.dialect.SQLServer2012Dialect"/>
            <property name="hibernate.hbm2ddl.auto" value="validate" />
            <property name="hibernate.id.new_generator_mappings" value="false"/>
        </properties>
    </persistence-unit>
</persistence>
Run Code Online (Sandbox Code Playgroud)

代码片段:

@Entity(name = "FrameReleasePlan")
@Table(name = "frame_release_plans")
@Audited
@Access(AccessType.FIELD)
public class FrameReleasePlan extends AbstractFrameReleasePlan
{
    @OneToOne
    @JoinColumn(name = "frame_id")
    protected Frame frame;
}

@Entity(name = "Frame")
@DiscriminatorValue("FRAME")
public class Frame extends Product
{
    @OneToOne(mappedBy …
Run Code Online (Sandbox Code Playgroud)

java sql-server hibernate jpa

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

Switch语句不处理NS_ENUM值

我有一个在Objective-c标头中定义的枚举,如下所示:

#import <UIKit/UIKit.h>
#import <MapKit/MapKit.h>
@interface CustomerAndProspectMapViewController : UIViewController<MKMapViewDelegate>
typedef NS_ENUM(NSInteger, TypeEnum)
{
    PROSPECT,
    CUSTOMER

};
@end
Run Code Online (Sandbox Code Playgroud)

然后在实现中我有一个函数,它将TypeEnum作为参数并使用开关来运行一些条件代码:

-(void) handleTestNavigation:(NSString *)accountId :(TypeEnum)accountType
{
    switch(accountType)
    {
        CUSTOMER:
        {
            [self performSegueWithIdentifier:@"customerDetails" sender:accountId];
            break;
        }

        PROSPECT:
        {
            [self performSegueWithIdentifier:@"prospectDetails" sender:accountId];
            break;
        }

    }

}
Run Code Online (Sandbox Code Playgroud)

如您所见,枚举的两个选项在交换机中都有相应的路径.但出于某种原因,我收到编译器警告说

在切换中未处理枚举值'PROSPECT'和'CUSTOMER'

为了确保,我在该方法中加入了一些断点.正如警告所示,虽然没有遇到过案件但它已经下降了.我也尝试重命名枚举值,以确保它们在某处并没有任何冲突.我完全被这里难住了.任何帮助将非常感激.

enums objective-c switch-statement

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

向实体类提供 Java 时钟以进行 Spring 验证

我正在开发一个 spring-boot 应用程序。我有一个名为 Message 的实体类,我想使用 Spring 验证对其进行验证。我需要验证的字段之一是 LocalDateTime,它不得早于当前日期 6 天。我的实体类如下所示:

@Entity
@EntityListeners(AuditingEntityListener.class)
public class Message implements Validator {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id", length = 100, nullable = false, unique = true)
    private long id;

    @Column(name = "start", length = 20, nullable = true)
    private LocalDateTime start;

    public Message() {}

    @Override
    public boolean supports(@NotNull Class<?> clazz) {
        return Message.class.equals(clazz);
    }

    @Override
    public void validate(Object target, Errors errors) {
        Message m = (Message) target;

        if(m.getStart() != null && m.getStart().isBefore(LocalDateTime.now(clock).minusDays(6))) …
Run Code Online (Sandbox Code Playgroud)

java validation spring datetime entity

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