我想为GCD调用创建一个宏,例如:
dispatch_async(dispatch_get_main_queue(), ^{
stuff....
});
Run Code Online (Sandbox Code Playgroud)
宏看起来像这样:main(^ {...})?
不知道如何写它.有什么建议吗?
谢谢
是否可以在不使用Xcode Organizer的情况下从.xcarchive捆绑包转换为.app捆绑包?我想创建一个自动构建,并获取可以分发的最终.app文件。将xcodebuild与存档目标一起使用非常适合获取.xcarchive文件,但不适用于最终应用程序。
使用iOS SDK,有一个PackageApplication工具可以与xcrun一起使用,但是OS X SDK似乎不存在。
我也想这样做,所以我希望可以从分发过程中获取更多的诊断信息,这对于我而言现在因臭名昭著的100021 OS错误代码而失败了。
我想知道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
使用filter
Swift的集合类型中的方法进行过滤.
这两种过滤方法之间是否存在性能差异?
我启动了一个方法,基本上是一个无限循环使用dispatch_queue_create
然后dispatch_async
(然后代码循环在调度块内).
循环运行完美.但是,当应用程序变为背景时,它会暂停.然后它在应用程序占用前台时重新启动.
我在github上有一个iOS项目设置,在过去的几天里我开始意识到我需要重构我的大部分代码.我构建的项目不遵循MVC的许多基础知识,现在想回去修复所有内容.
主要问题是项目足够大,重构将是一个巨大的痛苦.无论如何,我可以启动一个新项目,将它构建到当前所在的位置(显然有一些重大的设计更改)并将其推送到同一分支而不是原始项目的github?如果不清楚,请告诉我.
我发现在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
是否仍然可以使用没有懒惰属性的复合键?
NSCollectionView
打电话时我崩溃了makeItem(withIdentifier identifier: String, for indexPath: IndexPath)
。numberOfItemsInSection
返回正确的值。如果我打电话而不是打电话makeItem...
,我会看到一条错误消息,指示indexPath超出范围。怎么会这样?viewDidLoad
itemForRepresentedObject
集合视图的加载方式如下:
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) 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
?
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>
声明数组属性的方法,但是我不知道该如何做。
我班只有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会给我一个错误.如何在保存所有用户数据的同时更新此类?