小编Vik*_*ngh的帖子

Swift中的recursiveDescription方法?

有没有办法在Swift中使用[self.view recursiveDescription]?我试图使用此方法,但我收到以下错误:

'UIView' does not have a member named 'recursiveDescription'
Run Code Online (Sandbox Code Playgroud)

有什么建议?

uiview ios uiview-hierarchy swift ios8

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

Multipeer Connectivity:无效的服务类型

我正在尝试使用Multipeer Connectivity框架,但在尝试使用serviceType实例化MCNeaarbyServiceBrowser时遇到了崩溃.

以下是代码:

    private func setUpSession() {
    self.session = MCSession(peer: self.peerId);
    self.session!.delegate = self;

    self.browser = MCNearbyServiceBrowser(peer: self.peerId, serviceType: "stc-classroom-vik");
    self.browser!.delegate =  self;

    self.advertiser = MCNearbyServiceAdvertiser(peer: self.peerId, discoveryInfo: nil, serviceType: "stc-classroom-vik");
    self.advertiser!.delegate = self;
}
Run Code Online (Sandbox Code Playgroud)

这是我得到的崩溃/错误:

2014-08-15 12:24:42.689 Xavier[614:254319] *** Terminating app due to uncaught exception     'NSInvalidArgumentException', reason: 'Invalid serviceType passed to MCNearbyServiceBrowser'
Run Code Online (Sandbox Code Playgroud)

我真的很感激任何帮助.

ios multipeer-connectivity swift ios8

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

何时在解除视图控制器时自行解除分配

我有一个关于内存释放和块/闭包的问题.

以下是Swift方法

    self!.dismissViewControllerAnimated(false, completion: {
        println(self);
     })
Run Code Online (Sandbox Code Playgroud)

或者目标C方法

   [self dismissViewControllerAnimated:NO completion:^{
       NSLog("%@",self);
   }];
Run Code Online (Sandbox Code Playgroud)

我真的很感激,如果有人能够解释在上述方法中什么时候自我将被解除分配.是在完成块运行之后还是之前?我理解它由ARC照顾,但我想知道self是否在完成块中或之后获得释放消息.因此,如果我在完成块中进行一些小的清理(访问自己),是否安全/可接受?

objective-c ios objective-c-blocks automatic-ref-counting swift

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

出于内存原因,NSMutableArray比NSArray更好吗?

我有一个关于NSArray和NSMutableArray的问题.我理解两者之间的区别主要是NSArray是不可变的,NSMutableArray是可变的.就我的研究而言,性能也是一样的.有一件事我找不到一个好的答案,那就是NSMutableArray使用的内存比NSArray多,如果NSMutableArray在某种程度上比NSArray更苛刻.

我真的很感激建议和解释.

谢谢Vik

memory-management objective-c nsmutablearray nsarray ios

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

将Swift Closures作为值添加到Swift字典中

我想创建一个Swift字典,它将String类型作为其键,将Closures作为其值.以下是我的代码,但它给了我错误:

'@lvalue与'(String,( - - > Void)'不同

class CommandResolver {
     private var commandDict:[String : () -> Void]!

     init() {
         self.setUpCommandDict();
     }

     func setUpCommandDict() {

         self.commandDict["OpenAssessment_1"] = {
                 println("I am inside closure");

          }
      }
  }
Run Code Online (Sandbox Code Playgroud)

我试着在StackOverflow上查看关于词典中的闭包的其他问题,但它没有给我任何满意的答案.所以我非常感谢这里的一些帮助.

closures ios swift

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

Swift中的结构值类型

我理解'价值类型'和'参考类型'之间的区别.我知道'Structures'是'Value Types',根据Swift文档,结构存储的所有值本身都是值类型.现在我的问题是如果我在Struct中有一个存储属性,它是一个类的实例.在这种情况下,整个班级会被复制还是仅仅是其地址?

任何帮助,将不胜感激.

ios swift ios8

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

当另一个视图控制器显示在其上时,UIPresentationController会更改大小

我正在使用UIPresentationController呈现模态视图控制器.我使用以下方法设置presentView的框架小于containsView的边界:

override func frameOfPresentedViewInContainerView() -> CGRect {
    let myDX = (self.containerView!.bounds.width - 600)/2
    let myDY = (self.containerView!.bounds.height - 600)/2
    return self.containerView!.bounds.insetBy(dx: myDX, dy: myDY)
}
Run Code Online (Sandbox Code Playgroud)

到目前为止,一切都很好.

现在,我在当前显示的模式视图控制器顶部呈现另一个视图控制器(默认不是自定义),它占用整个屏幕.所以,我在默认模态视图控制器下面有一个自定义模态视图控制器,覆盖整个屏幕.

问题是当我关闭覆盖整个屏幕的顶视图控制器时,我的自定义视图控制器也显示覆盖整个屏幕.我希望我的自定义视图控制器的大小保持不变(小于containerView).有什么方法可以实现这一点.

任何帮助,将不胜感激

uikit uikit-transitions ios8 uipresentationcontroller uitraitcollection

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

查看模型 - 结构还是类?

在 iOS MVVM 架构中将视图模型作为结构而不是类是一个好主意吗?

mvvm ios swift2

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

UIAlertAction在其回调中解散UIAlertController

我正在尝试使用UIAlertControlleriOS 8中引入的新功能.除了UIAlertAction总是最终在其回调中解除警报控制器这一事实外,一切都很有效.以下是我的代码:

let alert = UIAlertController(title: "New Group", message: "Enter Group name", preferredStyle: UIAlertControllerStyle.Alert);
alert.addTextFieldWithConfigurationHandler({ [weak self] (nameField: UITextField!) in
    nameField.becomeFirstResponder();
    nameField.delegate = self;
    return;
})
alert.addAction(UIAlertAction(title: "Done", style: .Default, handler: { action in
    println("Done Entering");
}));
alert.addAction(UIAlertAction(title: "Cancel", style: .Cancel, handler: nil));
self.presentViewController(alert, animated: true, completion: nil);
Run Code Online (Sandbox Code Playgroud)

现在,当我单击"完成"按钮时,控件进入回调方法,然后警报被解除,即使我没有任何声明来解除警报.这种行为是默认的吗?如果是,我怎样才能确保在某些情况下警报停留在屏幕上(取决于我的条件)?我在这里错过了什么吗?

我真的很感激有关这方面的任何帮助.

swift ios8 uialertcontroller

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

Swift协议作为一种类型

我试图使用Swift协议作为类型.我有以下代码:

protocol STCMultipeerProtocol {
 typealias ErrorBlock = (NSError?)->();

 func start();
 func stop();
 func retryConnecting();
 func disconnect();
}

class STCConnectivityManager: NSObject {

 typealias VoidBlock = ()->();

 private var roleManager: STCMultipeerProtocol?
 private var completionBlock: VoidBlock?
 ....
}
Run Code Online (Sandbox Code Playgroud)

现在,问题是编译器给我错误:

Protocol 'STCMultipeerProtocol' can only be used as a generic constraint because it has Self or associated type requirements.
Run Code Online (Sandbox Code Playgroud)

我看到很多其他人都看到了这个错误,但我无法理解这个问题的正确原因和解决方案.

如果有人能帮我解决这个问题,我真的很感激

ios swift ios8

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

为什么在Swift中使用仅类协议?

任何人都可以在Swift中向我解释只有类的协议.我了解协议是什么以及我们使用它们的原因.我也理解,当我们在其中使用引用类型对象时,建议使用仅类协议,并且希望仅将协议构造限制为类.但是,我找不到支持该建议的任何好答案.为什么推荐?在这种情况下使用普通协议有什么缺点.

protocols swift ios8

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