小编Ste*_*mer的帖子

iTunes Connect - 无效的Swift支持 - Watch OS应用程序在两者上都有Swift库

归档并将我的应用程序(使用Xcode 7.2.1)上传到iTunes Connect后,我收到来自iTunes Connect的电子邮件说:

无效斯威夫特支持 - 手表OS应用程序在两个/负载/今天的Menu.app/TodaysReactiveMenuWatch.app/TodaysReactiveMenuWatch Extension.appex /框架/和/负载/今天的Menu.app/TodaysReactiveMenuWatch.app/Frameworks/斯威夫特库.从其中一个位置删除所有Swift库,然后重新提交您的应用程序.

我的项目包含iOS应用程序和watchOS应用程序.所有目标都设置了"嵌入式内容包含Swift代码"标志,YES因为我的所有源文件都是用Swift编写的.

我的pod文件包含以下内容:

use_frameworks!

# ignore all warnings from all pods
inhibit_all_warnings!

def shared_pods
    pod 'ReactiveCocoa', '4.0.1'
    pod 'Alamofire', '~> 3.1.4'
    pod 'Unbox', '~> 1.3'
end

target 'TodaysReactiveMenu' do
    platform :ios, '9.0'

    shared_pods
    pod 'Fabric', '~> 1.6.0'
    pod 'Crashlytics', '~> 3.4.0'
    pod 'PureLayout', '~> 3.0.1'
end

target 'TodaysReactiveMenuTests' do

end

target 'TodaysReactiveMenuWatch Extension' do
    platform :watchos, '2.0'

    shared_pods
end
Run Code Online (Sandbox Code Playgroud)

我正在使用CocoaPods 1.0.0.beta.4.关于我如何解决这个问题的任何想法?

itunesconnect ios cocoapods swift watchos-2

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

打开其中一个后,所有通知都会消失

我有一个服务器向我发送推送通知,让我们说我手机上有5个通知.如果我打开其中一个,其他所有通知都会消失.我只希望点击的一个消失.

这是我处理接收通知的方式:

func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject], fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) {

    if ( application.applicationState == UIApplicationState.Inactive || application.applicationState == UIApplicationState.Background  )
    {
        // navigating user to a view controller
    }
    application.applicationIconBadgeNumber = 0
}
Run Code Online (Sandbox Code Playgroud)

push-notification ios swift

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

随机和偶然的网络错误(NSURLErrorDomain代码= -1001和NSURLErrorDomain代码= -1005)

最近几天我试图从d00m调试网络错误.我开始缺乏想法/线索,我希望其他SO用户拥有可能有用的宝贵经验.我希望能够提供所有相关信息,但我个人无法控制服务器环境.

整个事情始于用户注意到我们的应用程序中的几个"网络错误".该错误似乎是随机发生的,没有任何与互联网连接,iOS版本或后端更新相关的明显模式.幕后发生的两个错误是:

Error Domain=NSURLErrorDomain Code=-1001 "The request timed out."

并且更频繁地:

Error Domain=kCFErrorDomainCFNetwork Code=-1005 "The network connection was lost.

经过几天的调试后,我设法通过触发大约重现这些错误(随机发生).向我们的后端发出10个随机(GET和POST)请求,每个请求之间有一个随机睡眠定时器(设置为1-20秒).但是,它只发生在一些时期.我在过去几天经历的是,当一段"错误时期"开始时,我每运行一次或两次错误就会得到一个错误(意味着错误率为1/10或1/20请求) ).此错误率持续几个小时,然后错误消失了几个小时,然后它全部开始.

关于设置的一些快速事实:

  • 发生在设备和模拟器上
  • 在iOS 8.4和iOS 7.1上发生 - 尽管v.8.4是我用于测试的主要版本.
  • 我们NSURLSession用于我们的网络请求.我们还包含AFNetworking(更新到最新版本),但我们只使用安全部分进行SSL固定.即使SSL钉扎完全关闭,错误仍然会发生.

我在过去几天写下的一些调查结果:

  • 它似乎只发生在我们的生产环境中,它们具有与我们的临时环境不同的配置.这让我认为它可能与此处此处keep-alive讨论的错误有关.但是,我们的运营部门已经设置了一个新的临时环境,它发送与生产环境相同的标头,但这并没有使登台环境发生错误.keep-alive
  • 我们的Android版应用无法使用相同的请求设置重现错误.此外,我们在Android应用中未收到有关"网络错误"的客户问题.

我的直觉表明它与服务器环境和iOS中的HTTP实现有关.然而,我无法找到一个可以证明什么的令人信服的模式.我使用简单的Rails脚本进行了相同的设置,当下一个"错误周期"发生时,我将准备尝试在iOS之外重现它.发生这种情况时我会更新问题.

我不是在寻找涉及重置wifi设置,关闭模拟器或类似设备的解决方案,因为我认为这不是生产环境中可行的解决方案.我也考虑过在GitHub问题中提到的重试循环修复,但我认为这是最后的手段.

如果您需要更多信息,请与我们联系.

networking ios ios7 nsurlsession ios8

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

解决Swift 3中缺乏递归协议约束的问题

Swift 3(Xcode 8 beta 6)目前在"递归协议约束"方面存在限制.这里是一个开放的问题在这里,而且有类似的讨论正在进行这里,这里这里.但是,我仍然没有看到应该如何解决这个限制.可能吗?

让我们考虑一个引用视图模型的视图的简单示例,反之,不要考虑ref/value类型以及任何保留周期:

protocol ViewModelType {
    associatedtype V: ViewType
    var view: V { get }
}

struct ViewModel<V: ViewType>: ViewModelType {
    var view: V
}


protocol ViewType {
    associatedtype VM: ViewModelType
    var viewModel: VM { get }
}

struct View<VM: ViewModelType>: ViewType {
    var viewModel: VM
}
Run Code Online (Sandbox Code Playgroud)

使用上面的代码,您将遇到Type may not reference itself as a requirement提供的链接中讨论的内容.

然后(像我一样天真),我以为我可以通过这样做来解决这个问题:

protocol _ViewModelType {}
protocol ViewModelType: _ViewModelType {
    associatedtype V: _ViewType
    var …
Run Code Online (Sandbox Code Playgroud)

swift swift3

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

如何在ReactiveCocoa 3和4中进行基本绑定

我最近一直在阅读ReactiveCocoa v3,而我正在努力设置基本的东西.我已经阅读了变更日志,测试,少数SO问题和Colin Eberhardt关于这个主题的文章.但是,我仍然缺少基本绑定的示例.

假设我有一个提供当天菜单的应用程序.该应用程序正在使用RAC3和MVVM模式.

型号(菜单)

该模型有一个简单的方法来获取今天的菜单.至于现在,这不做任何网络请求,它基本上只是创建一个模型对象.该mainCourse物业是一个String.

class func fetchTodaysMenu() -> SignalProducer<Menu, NoError> {
    return SignalProducer {
        sink, dispoable in
            let newMenu = Menu()
            newMenu.mainCourse = "Some meat"
            sendNext(sink, newMenu)
            sendCompleted(sink)
    }
}
Run Code Online (Sandbox Code Playgroud)

ViewModel(MenuViewModel)

视图模型公开了不同的String变量,让视图控制器显示菜单.让我们只添加一个属性来显示主菜.

var mainCourse = MutableProperty("")
Run Code Online (Sandbox Code Playgroud)

我们为这个属性添加一个绑定:

self.mainCourse <~ Menu.fetchTodaysMenu()
    |> map { menu in
        return menu.mainCourse!
    }
Run Code Online (Sandbox Code Playgroud)

ViewController(MenuViewController)

最后但同样重要的是,我想在视图中介绍这个主要课程.我会UILabel为此添加一个.

var headline = UILabel()
Run Code Online (Sandbox Code Playgroud)

最后我想text通过观察我的视图模型来设置该UILabel 的属性.像这样的东西:

self.headline.text <~ viewModel.headline.producer
Run Code Online (Sandbox Code Playgroud)

遗憾的是,这不起作用.

问题

  1. 该方法fetchTodaysMenu()返回一个SignalProducer<Menu, NoError> …

reactive-cocoa swift reactive-cocoa-3

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

使用核心数据检索更多内容时按一个属性分组

我在Core Data中有一个表,其中包含以下属性:

date, name, phone
Run Code Online (Sandbox Code Playgroud)

我想检索5个唯一的电话号码列表,其名称按日期排序.所以在MySQL中它会是这样的:

SELECT name, phone FROM myTable GROUP BY phone ORDER BY date   
Run Code Online (Sandbox Code Playgroud)

所以,如果我有这个数据列表:

01/23/2015 someName1 12345678
01/21/2015 someName2 12345678
01/21/2015 someOtherName1 987654321
Run Code Online (Sandbox Code Playgroud)

我想检索一个唯一电话号码列表,其中日期字段控制与任何重复号码相关联的名称.在这种情况下,期望的结果将是:

01/23/2015 someName1 12345678
01/21/2015 someOtherName1 987654321
Run Code Online (Sandbox Code Playgroud)

但是这样做NSFetchRequest有点复杂,因为setPropertiesToGroupBy需要包含相同的属性列表setPropertiesToFetch.

换句话说,这就是我认为我能够做到的方式:

    NSEntityDescription *entity = [NSEntityDescription  entityForName:@"someEntity" inManagedObjectContext:someContext];
    NSFetchRequest *request = [[NSFetchRequest alloc] init];
    [request setEntity:entity];
    [request setResultType:NSDictionaryResultType];

    [request setPropertiesToFetch:@[@"name", @"phone"]];
    [request setPropertiesToGroupBy:@[@"phone"]];
    [request setFetchLimit:5];

    NSSortDescriptor *sortByCreatedDate = [[NSSortDescriptor alloc] initWithKey:@"date" ascending:NO];
    [request setSortDescriptors:@[sortByCreatedDate]];
Run Code Online (Sandbox Code Playgroud)

但是,propertiesToGroupBy除非我也包含该name字段,否则我将获得例外.

如何在不必手动浏览列表的情况下实现我想要的目标?

core-data objective-c ios

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

可以/我应该如何用RC3替换我的KVO东西?

我正在尝试将使用Facebook的KVOController的objc应用程序移植到Swift.我被鼓励将RC3看成是一种替代的,更加迅捷的方法.我已经阅读了一些博客,我很鼓励尝试一下.但是很多文档和博客似乎都集中在套接字和定时器上作为例子.所以我现在有两个简单的问题:

1)给出一个objc片段,如:

[self.KVOController observe: self.site keyPath: @"programs" options: NSKeyValueObservingOptionInitial block:^(id observer, id object, NSDictionary *change) {
    [self.tableView reloadData];
}];
Run Code Online (Sandbox Code Playgroud)

用RC3 API重写这个的简单方法是什么?self.KVOController unobserve: self.site当视图卸载时,RC3等效于什么?

2)建议我使用Carthage来获取RC3代码.我可以混用一个Cartfile安全与使用可可豆荚已经为项目AlamofireSwiftyJSON

key-value-observing reactive-cocoa swift carthage reactive-cocoa-3

7
推荐指数
2
解决办法
614
查看次数

无法解决:com.quickblox:quickblox-android-sdk-chat:2.6.1

我遵循quick blox给出的指令如下:

从sdk 2.6.1开始添加对特定模块的依赖只需添加:

dependencies 
{

   compile("com.quickblox:quickblox-android-sdk-chat:2.6.1")

}
Run Code Online (Sandbox Code Playgroud)

SDK模块自动包含传递模块依赖项.

但是,我无法同步gradle文件,因为它显示错误:

Fail to resolve: com.quickblox:quickblox-android-sdk-chat:2.6.1

请帮助我,我无法使用最新版本启动快速blox.

quickblox quickblox-android

7
推荐指数
2
解决办法
2232
查看次数

将一系列枚举从Swift桥接到Objective-C

从Swift 1.2开始,可以自动将Swift中的枚举转换为Objective-C.但是,据我所知,无法转换枚举数组.这是真的?

所以,这是可能的:

@objc public enum SomeEnumType: Int {
    case OneCase
    case AnotherCase
}
Run Code Online (Sandbox Code Playgroud)

但这不是:

public func someFunc(someArrayOfEnums: Array<SomeEnumType>) -> Bool {
    return true
}
Run Code Online (Sandbox Code Playgroud)

任何人都可以验证吗?你会如何推荐解决这个问题?一种方法是有两个方法声明,例如:

// This will not automatically get bridged.
public func someFunc(someArrayOfEnums: Array<SomeEnumType>) -> Bool {
    return true
}

// This will automatically get bridged.
public func someFunc(someArrayOfEnums: Array<Int>) -> Bool {
    return true
}
Run Code Online (Sandbox Code Playgroud)

但这会污染Swift接口.有没有办法隐藏任何Swift消费者的第二个函数声明?

objective-c ios swift

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

处理ReactiveCocoa中的next,completed和error

我在ReactiveCocoa世界中仍然相当新,我只是想澄清这个常见的场景.我注意到其他人在GitHub和SO上都在努力解决这个问题,但我仍然错过了一个正确的答案.

以下示例确实有效,但我看到Justin Summers说订阅内订阅或订阅通常可能是代码味道.因此,我想在学习这个新范例时尝试避免坏习惯.

所以,这个例子(使用MVVM)非常简单:

  1. ViewController包含一个登录按钮,该按钮连接到viewmodel中的login命令
  2. ViewModel指定命令操作并模拟此示例的某些网络请求.
  3. ViewController订阅命令的executionSignals,并能够区分三种类型的返回:next,error和complete.

和代码.

1(ViewController):

RAC(self.loginButton, rac_command) = RACObserve(self, viewModel.loginCommand);
Run Code Online (Sandbox Code Playgroud)

2(ViewModel):

self.loginCommand = [[RACCommand alloc] initWithEnabled:canLoginSignal 
                        signalBlock:^RACSignal *(id input) {
                            return [[RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
                        BOOL success = [username isEqualToString:@"user"] && [password isEqualToString:@"password"];
                        // Doesn't really make any sense to use sendNext here, but lets include it to test whether we can handle it in our viewmodel or viewcontroller
                        [subscriber sendNext:@"test"];
                            if (success) 
                            {
                                [subscriber sendCompleted];
                            } else {
                                [subscriber sendError:nil];
                            }

                        // Cannot cancel …
Run Code Online (Sandbox Code Playgroud)

objective-c ios reactive-cocoa

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

如何使用参数进行 Nunit 测试?

我想做一个[Test]接收参数的操作,而不是使用[TestCase]该参数可以采用多个值。我似乎找不到办法做到这一点。

这是我想做的:

    [Test]
    static public void NUnitWriter(int errorCode)
    {
        Assert.AreEqual (0, errorCode);
    }
Run Code Online (Sandbox Code Playgroud)

该函数只接收一个错误代码,如果它不为 0(出现问题),则断言。

c# nunit

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