我在Swift中有一个自定义的OptionSetType结构.如何枚举实例的所有值?
这是我的OptionSetType:
struct WeekdaySet: OptionSetType {
let rawValue: UInt8
init(rawValue: UInt8) {
self.rawValue = rawValue
}
static let Sunday = WeekdaySet(rawValue: 1 << 0)
static let Monday = WeekdaySet(rawValue: 1 << 1)
static let Tuesday = WeekdaySet(rawValue: 1 << 2)
static let Wednesday = WeekdaySet(rawValue: 1 << 3)
static let Thursday = WeekdaySet(rawValue: 1 << 4)
static let Friday = WeekdaySet(rawValue: 1 << 5)
static let Saturday = WeekdaySet(rawValue: 1 << 6)
}
Run Code Online (Sandbox Code Playgroud)
我想这样的事情:
let weekdays: WeekdaySet = [.Monday, .Tuesday] …Run Code Online (Sandbox Code Playgroud) 我想在我的Swift iOS应用程序中使用NSURLQueryItem.但是,该类仅在iOS 8中可用,但我的应用程序也应该在iOS 7上运行.如何在Swift中检查类是否存在?
在Objective-C中,您可以执行以下操作:
if ([NSURLQueryItem class]) {
// Use NSURLQueryItem class
} else {
// NSURLQueryItem is not available
}
Run Code Online (Sandbox Code Playgroud)
与此问题相关的是:如何检查现有类的方法或属性是否存在?
在https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/AdvancedAppTricks/AdvancedAppTricks.html#//apple_ref/doc/uid/TP40007072-CH7-SW4中有一个很好的部分称为支持多个iOS的版本,解释了Objective-C的不同技术.如何将这些转换为Swift?
我的应用程序中有以下Core Data设置:
Persistent Store Coordinator
^ Background MOC (NSPrivateQueueConcurrencyType)
^ Main Queue MOC (NSMainQueueConcurrencyType)
Run Code Online (Sandbox Code Playgroud)
这是初始化代码:
_backgroundContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
[_backgroundContext setPersistentStoreCoordinator:self.coordinator];
_mainContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];
[_mainContext setParentContext:_backgroundContext];
Run Code Online (Sandbox Code Playgroud)
我使用背景MOC导入大量数据.我还使用它在后台执行复杂的提取请求,然后将对象ID传递给主队列以使用这些ID获取对象.
这非常有效.但是,我不知道如何让主队列MOC知道后台MOC中所做的更改.我知道如果我在主队列MOC上执行获取请求,它将获得更改,但这不是我想要的.
可以使用NSManagedObjectContextObjectsDidChangeNotification后台MOC发布的通知并调用mergeChangesFromContextDidSaveNotification:主队列MOC吗?这应该导致NSManagedObjectContextObjectsDidChangeNotification主队列MOC 的通知被触发.我在视图控制器中侦听此通知,并检查userInfo更改并相应地重新显示数据.我认为如果你有一个持久的商店协调员和两个附加的MOC,你通常会这样做.但是,当你有孩子/父母的情境时,我不确定这是否是正确的做法.
你将如何在Swift中实现以下模式?
所述Container类被初始化,其中包含的词典JSON数组.这些词典用于初始化Entry类.但是,Entry当访问entries或searchEntries访问属性时,对象的初始化会延迟发生.
@interface Container
@property (readonly, nonatomic) NSArray *entryDicts;
@property (readonly, nonatomic) NSArray* entries;
@property (readonly, nonatomic) NSDictionary *searchEntries;
@end
@implementation Container
- (instancetype)initWithArray:(NSArray *)array
{
self = [super init];
if (self) {
_entryDicts = array;
}
return self;
}
@synthesize entries = _entries;
- (NSArray *)entries
{
[self loadEntriesIfNeeded];
return _entries;
}
@synthesize entriesByNumber = _entriesByNumber;
- (NSDictionary *)entriesByNumber
{
[self loadEntriesIfNeeded];
return _entriesByNumber;
}
- (void)loadEntriesIfNeeded
{
if …Run Code Online (Sandbox Code Playgroud) 我有一个名为“ Item”的实体,其属性为“ colorArray”,类型为“ Transformable”。
colorArray可以是,例如:
[["Red", "Blue", "Green"], ["Red"], ["Blue", "Green"], ["Green"], ["Blue"], ["Blue", "Green", "Red"]]
Run Code Online (Sandbox Code Playgroud)
然后,我使用以下命令将colorArray保存到核心数据中:
newEntry.colorArray = colorArray as NSObject
Run Code Online (Sandbox Code Playgroud)
我想从核心数据中检索colorArray(以与保存时相同的数组格式),执行此操作的最佳方法是什么?