小编Mar*_*uro的帖子

如何将自己的类从您自己的项目导入Playground

假设这样的设置:

  • 你有一个Xcode 6项目,你用Objective-C和Swift实现了自己的类(比如MyView和MyViewController)
  • 您已将Playground添加到项目中

在Playground中,可以导入UIKitimport关键字一样的模块(框架).如何从Playground启用对项目其他类的访问?

只是尝试直接访问项目类会产生错误消息: 使用未解析的标识符"MyView"

ios swift swift-playground

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

在Xcode的调试控制台输出中禁用自动布局约束错误消息

有没有办法(暂时)禁用自动布局错误/警告消息:

Unable to simultaneously satisfy constraints.
    Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints) 
(
    "<NSLayoutConstraint:0x170098420 H:[UIView:0x15c62c100(2)]>",
    "<NSLayoutConstraint:0x170098600 UIView:0x15c6294f0.leading == UIView:0x15c628d40.leadingMargin - 8>",
    "<NSLayoutConstraint:0x170098650 …
Run Code Online (Sandbox Code Playgroud)

xcode ios autolayout

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

如何在Swift中实现具有相同内容的两个没有代码重复的内容?

假设一个派生自UIView以下的类:

class MyView: UIView {
    var myImageView: UIImageView

    init(frame: CGRect) {
        super.init(frame: frame)
    }

    init(coder aDecoder: NSCoder!) {
        super.init(coder: aDecoder)
    }

    ...
Run Code Online (Sandbox Code Playgroud)

如果我想在两个初始化器中使用相同的代码,例如

self.myImageView = UIImageView(frame: CGRectZero)
self.myImageView.contentMode = UIViewContentMode.ScaleAspectFill
Run Code Online (Sandbox Code Playgroud)

并且在类实现中不重复该代码两次,我将如何构造init方法?

尝试的方法:

  • 创建了一个func commonInit()在调用之后调用的方法super.init- > Swift编译器myImageView在调用之前给出了一个关于未初始化变量的错误super.init
  • func commonInit()之前的调用super.init失败是显而易见的,编译器错误"'self'在super.init调用之前使用"

ios swift

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

如何在iOS 8中正确确定今日扩展左边距?

我试图找出如何计算今日扩展主视图中的左边距,以将内容与今日视图标签的其余部分对齐.

这是一个使用Today扩展的干净Xcode项目的示例(我已经为视图背景添加了颜色并绘制了一条红色虚线,以说明我想要对齐Hello World的位置UILabel).

iPhone 6 Plus模拟器(左侧横向,右侧纵向)的结果可以从下图中找到:

在此输入图像描述

在图像中,请注意绿色主视图左边界的位置与应用程序名称UILabel"testi2"的位置不同.看起来红线 - 主视图左边界对齐在每个设备中都有所不同:iPhone 5x,iPhone 6和iPad.

可以使用干净的Xcode项目(我正在使用Xcode 6.1.1,iOS 8.1和Swift)重现该行为:

  1. 创建一个空的Xcode项目(单视图应用程序)
  2. 添加新目标:扩展程序>今天扩展程序
  3. 从Today扩展组中,找到MainInterface.storyboard并使主视图背景为绿色,Hello世界UILabel背景为红色: 在此输入图像描述

如何将Hello World UILabel(红色背景)与虚线对齐?或者如何将主视图(绿色背景)与虚线对齐?

iphone ipad ios ios8 today-extension

19
推荐指数
2
解决办法
3578
查看次数

如何在iOS 7.1的后台和前台中使用蓝牙LE检测附近的设备?

我有一个应用需要检测运行相同应用程序和iOS 7.1的附近(蓝牙LE范围内)设备.我考虑了两种检测方法:

  1. 使设备充当iBeacons并检测范围内的iBeacons
  2. 使用CoreBluetooth(就像在近处实现这里)来创建一个BLE外设,通告和扫描外设

看来选项1是不可能的,因为:

  • 当应用程序运行后台时,iOS可能需要至少15分钟才能检测到进入信标区域(iOS 7.1)

方案2似乎要走了,但实施方面存在一些困难:

  • iOS似乎在一段时间后(大约15分钟?)更改广告包中的外围UUID.这意味着不能直接从广告广播信号中识别广告设备.

关于这一点,我有以下问题:

  • 有没有其他方法实现附近的设备检测我没有考虑过?
  • 是否可以通过广告(或通过其他方式)识别设备,以便选项2可以工作?

iphone bluetooth ios core-bluetooth bluetooth-lowenergy

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

每当ReactiveCocoa 5中的UITextField文本属性发生更改时,如何获取信号

如何从用户启动和以编程方式更改UITextField text属性获得信号?通过continuousTextValues仅在用户启动更改时使用报告信号.如果以textField.text编程方式设置,则不会触发信号.

这就是我使用的方式continuousTextValues:

textField.reactive.continuousTextValues.observeValues { value in
    print("Value: \(value)")
}
Run Code Online (Sandbox Code Playgroud)

如果我text手动设置它不会被触发:

textField.text = "Test"
Run Code Online (Sandbox Code Playgroud)

uitextfield reactive-cocoa swift reactive-cocoa-5 reactive-swift

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

如何在 Snowflake SQL 中将字符串连接到变量

可以使用 Snowflake变量来确定源表,如下所示:

set src='some_table';
select count(*) from $src;
Run Code Online (Sandbox Code Playgroud)

但是,我正在寻找一种方法来提供数据库名称作为变量并将其与表名称连接起来。伪代码:

set db='database';
select count(*) from $db.table_name; 
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?我想保留databasetable_name分开(所以设置dbandtable=database.table_name不是一个选项)。

snowflake-cloud-data-platform

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

如何使用单例类中枚举的状态在 Swift UI 的视图中触发警报

假设一个单例类具有有关登录状态的枚举,如下所示:

@Published var loginState: LoginState = .unknown
Run Code Online (Sandbox Code Playgroud)

@ObservedObject单例类实例在视图中被指定为 an ,以获取其他@Published变量的更改,如下所示:

struct LoginView: View {
    @ObservedObject var loginDelegate = Singleton.shared
Run Code Online (Sandbox Code Playgroud)

loginState当单例设置为特定枚举情况(例如)时,如何使用类似以下内容在视图中触发警报.error

}.alert(isPresented: <something> ) { ... }
Run Code Online (Sandbox Code Playgroud)

swift swiftui

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

如何在 Snowflake 中设置系统(或用户)时区?

Snowflake 似乎默认为某个太平洋时区。我想使用 EET 作为默认时区。有没有办法在系统范围或每个用户范围内设置它?

snowflake-cloud-data-platform

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

将UITableView平移限制为1个手指

我有一个场景,我有两个UITableViews作为主UIView中的子视图:

UIView(帧=全屏)
+ --- UITableView(帧=屏幕的〜1/3)
+ --- UITableView(帧=屏幕的第二~1/3)

我想检测整个屏幕区域上的三个手指向上滑动(并且还允许用户使用至少一个手指上下平移UITableViews).

我有一个附加到UIView的UISwipeGestureRecognizer numberOfTouchesRequired = 3.

我试过这些:

  • maximumNumberOfTouches在两个UITableViews 上将内部UIPanGestureRecognizer设置为1.根据我的理解,这应该可以防止UITableViews上有两个和三个手指平底锅,但事实并非如此.(如果我enabled在这些UIPanGestureRecognizers上设置为NO,则触摸被正确传递给superview.但是平移/滚动不起作用.)
  • 在我们的两个UITableViews上调用panGestureRecognizer requireGestureRecognizerToFail:UISwipeGestureRecognizer.这部分工作,但平移等待直到滑动没有完成,它感觉非常笨拙.
  • 覆盖UITableView并设置shouldRecognizeSimultaneouslyWithGestureRecognizer:为返回YES,这允许我检测三指滑动.但是,下面的UITableViews无意中向上/向上滚动.

那么如何将平移触摸次数限制为1(或2)并让三指UISwipeGestureRecognizer识别三次手指滑动?

objective-c uitableview uigesturerecognizer ios

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

如何在iOS中将Firebase对象保存到磁盘?

看来,火力地堡的iOS实现不支持客户端模式的离线缓存.这在实践中意味着什么:

  • 对于需要身份验证的Firebase应用,您需要首先进行身份验证并等待Firebase完成登录(检查用户身份,打开套接字等),然后才能开始移动数据.这将需要1-8秒(通常为2-5秒),具体取决于网络条件,至少在芬兰这里.
  • 验证后,Firebase首先下载初始数据集并初始化客户端缓存.执行此操作的时间取决于您为侦听器添加的数据的大小,但通常非常快.

这里的问题是,如果您使用Firebase实现,例如消息传递应用程序,您很可能希望在与后端服务器的实际连接之前向用户显示消息线程和消息的先前缓存版本成立.

我假设正确的实现需要处理:

  1. 客户端模型< - > Firebase JSON映射(我使用Mantle)
  2. 将客户端模型保留到磁盘(使用NSKeyedArchiver或Core Data等手动实现?)
  3. 当连接可用时,将磁盘上的模型与内存中与Firebase相关的模型同步(手动实现?)

有没有人想出一个解决方案(自己的或第三方)来实现2)和3)?

offline offline-caching ios firebase firebasesimplelogin

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

如何在Swift中使用较少重复的代码进行连续的方法调用?

以下是来自HockeyApp的示例,它生成以下代码:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    BITHockeyManager.sharedHockeyManager().configureWithIdentifier(API_KEY)
    BITHockeyManager.sharedHockeyManager().disableCrashManager = true
    BITHockeyManager.sharedHockeyManager().startManager()
    BITHockeyManager.sharedHockeyManager().authenticator.authenticateInstallation()

    return true
}
Run Code Online (Sandbox Code Playgroud)

注意BITHockeyManager.sharedHockeyManager()每次通话中的重复.我正在寻找一种类似(伪代码)的语法:

with BITHockeyManager.sharedHockeyManager() do {
    .configureWithIdentifier(API_KEY)
    .disableCrashManager = true
    .startManager()
    .authenticator.authenticateInstallation()
}
Run Code Online (Sandbox Code Playgroud)

有没有办法在Swift中这样做?

编辑:在写完这个问题后,我注意到Alamofire正在使用"可链接的方法",这实际上是我原本想要的.这允许一个简洁的语法,如下(来自http://nshipster.com/alamofire/的代码):

Alamofire.request(.GET, "http://httpbin.org/get")
         .response { (request, response, data, error) in
                     println(request)
                     println(response)
                     println(error)
                   }
Run Code Online (Sandbox Code Playgroud)

要在HockeyApp中使用相应的语法,需要修改BITHockeyManager类.

ios swift

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