小编bda*_*ash的帖子

为GCD调用写宏?

我想为GCD调用创建一个宏,例如:

dispatch_async(dispatch_get_main_queue(), ^{
    stuff....
});
Run Code Online (Sandbox Code Playgroud)

宏看起来像这样:main(^ {...})?

不知道如何写它.有什么建议吗?

谢谢

macros xcode grand-central-dispatch ios

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

您可以从命令行而不是在Xcode中创建Mac .app发行版吗?

是否可以在不使用Xcode Organizer的情况下从.xcarchive捆绑包转换为.app捆绑包?我想创建一个自动构建,并获取可以分发的最终.app文件。将xcodebuild与存档目标一起使用非常适合获取.xcarchive文件,但不适用于最终应用程序。

使用iOS SDK,有一个PackageApplication工具可以与xcrun一起使用,但是OS X SDK似乎不存在。

我也想这样做,所以我希望可以从分发过程中获取更多的诊断信息,这对于我而言现在因臭名昭著的100021 OS错误代码而失败了。

macos xcode build

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

过滤Realm与NSPredicate和块之间的差异

我想知道Realm的查询性能.鉴于此代码:

let result1 = realm.objects(Person.self).filter("age < 30 AND ... AND ...")
let result2 = realm.objects(Person.self).filter({ $0.age < 30 }).filter({$0.name .... }).filter({$0.nickname ...})
Run Code Online (Sandbox Code Playgroud)

result1是通过Person使用一个过滤对象创建的NSPredicate,同时result2使用filterSwift的集合类型中的方法进行过滤.

这两种过滤方法之间是否存在性能差异?

realm swift

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

应用程序放置在后台时GCD调度操作未运行

我启动了一个方法,基本上是一个无限循环使用dispatch_queue_create然后dispatch_async(然后代码循环在调度块内).

循环运行完美.但是,当应用程序变为背景时,它会暂停.然后它在应用程序占用前台时重新启动.

我怎样才能防止这种情况发生?我一直在这里,但似乎优先权不是我可以选择的事情之一.

grand-central-dispatch ios

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

Github,推动一个新项目取代旧项目

我在github上有一个iOS项目设置,在过去的几天里我开始意识到我需要重构我的大部分代码.我构建的项目不遵循MVC的许多基础知识,现在想回去修复所有内容.

主要问题是项目足够大,重构将是一个巨大的痛苦.无论如何,我可以启动一个新项目,将它构建到当前所在的位置(显然有一些重大的设计更改)并将其推送到同一分支而不是原始项目的github?如果不清楚,请告诉我.

git github git-push

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

具有惰性属性的Realm中的复合键

我发现在Swift中使用带有复合主键的Realm这个很棒的解决方案:https://github.com/realm/realm-cocoa/issues/1192

public final class Card: Object {
  public dynamic var id = 0 {
      didSet {
          compoundKey = compoundKeyValue()
      }
  }
  public dynamic var type = "" {
      didSet {
          compoundKey = compoundKeyValue()
      }
  }
  public dynamic lazy var compoundKey: String = self.compoundKeyValue()
  public override static func primaryKey() -> String? {
      return "compoundKey"
  }

  private func compoundKeyValue() -> String {
      return "\(id)-\(type)"
  }
}
Run Code Online (Sandbox Code Playgroud)

但我发现Realm不支持延迟属性,在我的情况下我收到此错误:

exception NSException*name:"RLMException" - reason:"在Realm Swift对象类上不允许使用惰性托管属性'compoundKey'.要么将属性添加到忽略的属性列表中,要么将其设置为非惰性." 0x00007f8a05108060

是否仍然可以使用没有懒惰属性的复合键?

compound-key realm swift

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

创建项目时NSCollectionView崩溃

NSCollectionView打电话时我崩溃了makeItem(withIdentifier identifier: String, for indexPath: IndexPath)numberOfItemsInSection返回正确的值。如果我打电话而不是打电话makeItem...,我会看到一条错误消息,指示indexPath超出范围。怎么会这样?viewDidLoaditemForRepresentedObject

集合视图的加载方式如下:

class TagCollectionViewController: NSViewController, NSCollectionViewDataSource {

  fileprivate static let itemIdentifier = "TagItem"

  @IBOutlet var collectionView: NSCollectionView!
  fileprivate var tags = List<Tag>.init()

  override func viewDidLoad() {
    super.viewDidLoad()

    let nib = NSNib(nibNamed: "TagCollectionViewItem", bundle: nil)
    collectionView.register(nib, forItemWithIdentifier: TagCollectionViewController.itemIdentifier)

    collectionView.dataSource = self
}
Run Code Online (Sandbox Code Playgroud)

(List集合是一个Realm类)

viewWillAppear()标签集合从ReSwift状态填充的过程中:

override func viewWillAppear() {
  for image in mainStore.state.selectedImages {
    for tag in image.tags {
      tags.append(tag)
    }
  }

  super.viewWillAppear()
}
Run Code Online (Sandbox Code Playgroud)

macos nscollectionview swift

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

为什么Realm建议使用"let"声明List <T>属性?

Realm关于to-many关系的文档List<Dog>使用let以下方法声明其属性:

class Person: Object {
    // ... other property declarations
    let dogs = List<Dog>()
}
Run Code Online (Sandbox Code Playgroud)

为什么在List<T>声明使用let其他Realm属性类型时声明了此属性dynamic var

realm swift

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

在Swift中使用Realm Objective-C时声明RLMArray属性

class Post: RLMObject {
    var images: RLMArray!
    override init(JSON:json) {
        if let imagesArray = dictionary["images"].arrayObject {
            let imagesItems = RLMArray(objectClassName: StringObject.className())
            for dic in imagesArray {
                let image = StringObject(stringValue: dic as! String)
                imagesItems.addObject(image)
            }
            images = imagesItems
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

上面我尝试初始化的代码PostModel包括images属性,但是它始终在我的项目中崩溃:

RLMArray对象类型不支持'(null)'。RLMArrays只能包含RLMObject子类的实例

我在Realm Swift的文档中看到了用于List<Foo>声明数组属性的方法,但是我不知道该如何做。

realm swift

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

如何将字段添加到Realm模型类

我班只有4个领域:

class List: Object {
    dynamic var name = ""
    dynamic var date = ""
    dynamic var notes = ""
    dynamic var info = ""
}
Run Code Online (Sandbox Code Playgroud)

我想再增加2个:

dynamic var website = ""
dynamic var telephone = ""
Run Code Online (Sandbox Code Playgroud)

如果我将这些字段添加到类中,那么由于新字段,Realm会给我一个错误.如何在保存所有用户数据的同时更新此类?

realm swift

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