小编Pau*_*ung的帖子

在Swift中,如何指定将RawRepresentable限制为String的类型?

我正在尝试定义一个需要实现enum原始值的协议String.

我不相信它现在可以强制使用enum,而且我不确定我是否真的在乎,只要我可以打电话fromRaw()和接收一个地方String.

所以,我试图保持以下的简洁性,同时限制Beta是一个enum地方的原始值是String:

protocol Alpha {
    typealias Beta: RawRepresentable
}

struct Gamma: Alpha {
    enum Beta: String {
        case Delta = "delta"
    }
}

struct Eta<T: Alpha, U: RawRepresentable where T.Beta == U> {
    let alpha: T
    let beta: U
    init(alpha: T, beta: U) {
        self.alpha = alpha
        self.beta = beta
        println("beta is: \(beta.toRaw())")
    }
}

let gamma = Gamma()
Eta(alpha: gamma, …
Run Code Online (Sandbox Code Playgroud)

swift rawrepresentable

12
推荐指数
2
解决办法
4813
查看次数

为什么我的F#项目在本地构建但在Travis上失败?

我的项目的构建在Travis失败,出现以下错误:

FSC:错误FS0193:来自编译单元'System'的模块/名称空间'System.Net'不包含名称空间,模块或类型'WebClient'

主要的项目没有任何相关性,测试项目不依赖于System.NetWebClient,所以我不知道这里如何应用.

一切都在本地工作正常,所以我假设某个版本不匹配,但无法识别什么.

可以在此文本文件中找到本地构建的输出.


更新

@ 7sharp9创建的GitHub问题之后,发现这是一个Mono 包装错误.

建议的解决方法FSharp.Core从NuGet包中引用,这对我有用.

您可能希望仅在规范路径不可用时使用NuGet包,就像我一样.

.net f# travis-ci

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

git svn是否支持svn:needs-lock?

要访问我们的SVN存储库,我正在使用git svn,而其他团队成员正在使用svn.

当他们设置needs-lock属性时,看起来git svn忽略了这一点并允许我无论如何更新文件.

那是准确的吗?

另外,是否可以使用git svn管理needs-lock属性?

svn git git-svn

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

如何防止`pod install`将libPods.a添加到"Link with Libraries"构建阶段而不创建新目标?

我正在开发一个静态库,其依赖项在其podspec文件中指定,不会成为库的一部分.

为了开发针对这些依赖我创建了一个Podfile它引用本地.podspec文件.运行后,pod install我现在可以使用CocoaPods创建的工作区,并在引用依赖项时不再出现构建失败.

除了将libPods.a添加到"使用库的链接二进制"构建阶段之外,这一切都是可取的.我不想要这个,因为我不想包含依赖项.我可以手动删除它,一切顺利,直到下次我运行pod安装.

重申一下; 我的问题是,如何防止该条目出现在构建阶段?正如标题中所提到的,我想这样做而不需要创建一个"虚拟"目标,这是一种可以用来使CocoaPods与该目标链接的技术.

如果由于CocoaPods的某些限制我无法阻止它,我可以使用CocoaPods post_install钩子或添加"运行脚本"构建阶段来删除它吗?

macos xcode ios cocoapods

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

为什么OS X上的Xamarin Studio会出现以下错误,而Visual Studio中却没有?

我试图理解为什么在OS X上运行Xamarin Studio 5.9.1(build 3)中的测试时会出现以下错误.


System.IO.FileNotFoundException:无法加载文件或程序集'System.Net.Http,Version = 1.5.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'或其依赖项之一.

System.IO.FileNotFoundException


System.TypeLoadException:发生了类型加载异常.

System.TypeLoadException


所有项目都成功构建,并且使用相同的解决方案在Windows上的Visual Studio中运行相同的测试.

我在OS X上构建测试项目看到了警告,尽管已经安装并添加了引用.

引用MyProject.fsproj的所有项目都必须安装nuget包Microsoft.Bcl.Build.有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkID=317569.

mono f# visual-studio xamarin

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

在Alamofire中使用backgroundCompletionHandler的正确方法是什么?

我不清楚如何正确使用它,但看到其他人做这种事情:

func application(application: UIApplication, handleEventsForBackgroundURLSession identifier: String, completionHandler: () -> Void) {
    manager.sharedInstance.backgroundCompletionHandler = completionHandler
}
Run Code Online (Sandbox Code Playgroud)

在我们类似的实现中,此时completionHandlerpartial apply forwarder for reabstraction thunk helper...

在哪里manager(尽管是一个单身人士)基本上:

let configuration = NSURLSessionConfiguration.backgroundSessionConfigurationWithIdentifier("com.ourcompany.app")
let manager = Alamofire.Manager(configuration: configuration)
Run Code Online (Sandbox Code Playgroud)

但是,这会导致在控制台中打印以下警告:

Warning: Application delegate received call to -application:handleEventsForBackgroundURLSession:completionHandler: but the completion handler was never called.

我设置一个断点位置,并在这一点上的消息已经是可见的控制台和backgroundCompletionHandlernil.

我们正在使用Xcode 7.0构建iOS 9 SDK,目前正在使用Alamofire 2.0.2

我最初认为这是在我们合并Swift 2.0分支时引入的,但是我也看到了使用Xcode 6.4对iOS 8 SDK的早期提交的消息.


更新1

要解决@ cnoon的建议:

  • 标识符匹配 - 配置和管理器设置在单例内,因此没有办法让它出错.
  • 在类中添加和打印内部时didSet,会backgroundCompletionHandler …

nsurlsession nsurlsessionconfiguration alamofire

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

如何在没有嵌套订阅的情况下订阅命令执行信号的完成?

我尝试了以下但没有成功.等效使用-subscribeNext:按预期工作.

// A
[[_viewModel.loginCommand.executionSignals flatten] subscribeCompleted:^{
    NSLog(@"A");
}];
Run Code Online (Sandbox Code Playgroud)

我唯一的工作实现如下:

// B
[_viewModel.loginCommand.executionSignals subscribeNext:^(RACSignal *loginSignal) {
    [loginSignal subscribeCompleted:^{
        NSLog(@"B");
    }];
}];
Run Code Online (Sandbox Code Playgroud)

为什么不能-flatten在"A"中工作,如何重写"B"以不使用嵌套订阅?

objective-c frp reactive-cocoa

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

如何定义CollectionType的扩展名以使其方法可用于词典?

我最近能够从以下位置更改扩展名:

extension Array where Element: Encodable { ... }
Run Code Online (Sandbox Code Playgroud)

至:

extension CollectionType where Generator.Element: Encodable { ... }
Run Code Online (Sandbox Code Playgroud)

为了以后能够与应用类型约束CollectionTypeEncodable在不同的扩展名.

现在我正在尝试做同样的事情Dictionary,改变:

extension Dictionary where Key: StringLiteralConvertible, Value: Encodable { ... }
Run Code Online (Sandbox Code Playgroud)

至:

extension CollectionType where Generator.Element == (Key: StringLiteralConvertible, Value: Encodable) { ... }
Run Code Online (Sandbox Code Playgroud)

但是,后者似乎不是该Dictionary类型的有效替代,因为现在扩展中定义的方法不能在字典上调用.

如何定义CollectionType(或可能SequenceType)扩展名以使其方法可用于词典?


更新

我想要注意,我已尝试添加类型约束,如下所示,但没有成功:

extension CollectionType where Self: protocol<Indexable, SequenceType, DictionaryLiteralConvertible>, Self.Key: protocol<Hashable, StringLiteralConvertible>, Self.Value: Encodable, Self.Generator.Element == (Key: StringLiteralConvertible, Value: Encodable) { ... } …
Run Code Online (Sandbox Code Playgroud)

swift

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

如何在F#中的HttpMethod上进行模式匹配?

哪里requestHttpRequestMessage来自System.Net.Http,我试图使用模式匹配来确定哪种方法是用来做请求.

这是一个人为的例子,它证明了我的问题:

let m = match request.Method with
      | HttpMethod.Get -> "GET"
      | HttpMethod.Post -> "POST"
Run Code Online (Sandbox Code Playgroud)

这导致:

分析器错误:未定义字段,构造函数或成员"Get"

为什么这不起作用,我如何使用模式匹配或更合适的技术来实现相同的目标?

f# pattern-matching

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