iPhone 5c发布后,我很好奇是否有人知道API如何获得iPhone 5c颜色?我相信每个人都会发现将相应的UI颜色方案加载到设备颜色很方便.
我正在考虑将它包装在类似UIDevice类的东西中,它将返回UIColor.
更新: @ColinE和@Ortwin Gentz已经指出了私有UIDevice实例方法调用的可用性.
请注意,对于iPhone 5c,您真正需要的是deviceEnclosureColor,因为deviceColor将始终返回#3b3b3c,因为它是一种正面颜色.
方法签名:
-(id)_deviceInfoForKey:(struct __CFString { }*)arg1
Run Code Online (Sandbox Code Playgroud)
UIDevice类别:
@interface UIDevice (deviceColour)
- (id)_deviceInfoForKey:(struct __CFString { }*)arg1;
- (NSString*)deviceColourString_UntilAppleMakesItPublic;
- (NSString*)deviceEnclosureColour_UntilAppleMakesItPublic;
@end
@implementation UIDevice (deviceColour)
- (NSString*)deviceColourString_UntilAppleMakesItPublic
{
return [self _deviceInfoForKey:@"DeviceColor"];
}
- (NSString*)deviceEnclosureColour_UntilAppleMakesItPublic
{
return [self _deviceInfoForKey:@"DeviceEnclosureColor"];
}
@end
Run Code Online (Sandbox Code Playgroud) 假设我们定义了一组选项:
var arrayOfOptionals: [String?] = ["Seems", "like", "an", nil, "of", "optionals"]
Run Code Online (Sandbox Code Playgroud)
我可以用一小段时间强行打开它: var arrayForCrash = arrayOfOptionals.map { $0! }
但这会让应用程序崩溃,还有其他任何简短的方法(没有明确展开)我如何解开一个可选数组?
有没有什么方法可以指定断点来停止所有'throw'语句?(符号断点)
guard let id = UInt(idString),
let changeset = UInt(changesetString),
let uid = UInt(uidString)
else {
throw OSMVectorMapDescriptionError.ElementAttributeConversionError(element: xmlNode, attributeº: nil)
}
Run Code Online (Sandbox Code Playgroud) 为了让我的Objective-C框架在我的Swift可可触摸框架中成功链接,我不得不使用这种不合适的解决方法,这涉及将所有框架头文件作为公共头文件导入到项目中.
我完全不需要所有这些都出现在我的伞形标题中,所以我想以某种方式删除生成的一堆警告.("模块'Foo'的Umbrella标题不包含标题").我在构建设置中经历了LLVM警告设置,但找不到它.
好吧,我最初想要根据我的子类中的属性进行排序NSSortDescriptor
请求,但显然不会这样做,因为NSFetchedResultsController仅限于对获取的实体及其关系起作用的谓词和排序描述符,所以我决定在我的数据模型中创建一个transient属性,在我的子类中将此属性的属性合成为ivar ,并基于它进行排序.NSFetchedResultsController
NSManagedObject
NSManagedObject
运行时,我在执行fetch时得到了 'NSInvalidArgumentException', reason: 'keypath isActive not found in entity <NSSQLEntity SMSourceEntity id=2>'
我知道这是KVO问题,所以我补充说+ (NSSet*)keyPathsForValuesAffectingIsActive
,但仍然有同样的问题.
我做错了什么,或者我还在遗漏一些东西让它找到我的密钥路径?谢谢.
码:
@implementation SMSourceEntity
@dynamic friendlyName;
@dynamic interfaceAddress;
@dynamic uniqueID;
@dynamic network;
@synthesize isActive = _isActive;
+ (NSSet*)keyPathsForValuesAffectingIsActive
{
return [NSSet setWithObject:@"isActive"];
}
@end
Run Code Online (Sandbox Code Playgroud)
我的sortDescriptor:
request.sortDescriptors = [NSArray arrayWithObjects:[NSSortDescriptor sortDescriptorWithKey:@"isActive" ascending:NO] , nil];
Run Code Online (Sandbox Code Playgroud) objective-c key-value-observing transient nssortdescriptor ios
我创建了自定义序列类型,我希望函数接受任何类型的序列作为参数.(我想要使用两个集合,以及我的序列类型)
像这样的东西:
private func _addToCurrentTileset(tilesToAdd tiles: SequenceType)
Run Code Online (Sandbox Code Playgroud)
有什么方法可以做到吗?
这似乎相对简单,但我无法以某种方式解决它.Swift工具链告诉我:
Protocol 'SequenceType' can only be used as a generic constraint because it has Self or associated type requirements
我不知道如何创建一个符合SequenceType和Self要求的协议.
我可以消除associatedType要求,但不能取消Self:
protocol EnumerableTileSequence: SequenceType {
associatedtype GeneratorType = geoBingAnCore.Generator
associatedtype SubSequence: SequenceType = EnumerableTileSequence
}
Run Code Online (Sandbox Code Playgroud)
现在如果说我可以消除自我要求,那么已经使用这样的协议定义其他collectionType实体,如数组,集合将不符合它.
参考:我的自定义序列是枚举器类型的所有子类,定义如下:
public class Enumerator<T> {
public func nextObject() -> T? {
RequiresConcreteImplementation()
}
}
extension Enumerator {
public var allObjects: [T] {
return Array(self)
}
}
extension Enumerator: SequenceType {
public func generate() -> Generator<T> { …
Run Code Online (Sandbox Code Playgroud) 在使用针对所有苹果平台的通用框架时,我希望有条件地链接到.framework
OSX的另一个依赖项。
我可以将此依赖项添加到链接框架和库,并将其标记为可选。但是我不知道我应该添加或修改哪个自定义字段,Build Settings
以便仅将其实际链接.framework
为特定平台。(因为依赖项是可选的,因此没有任何内容-构建始终会失败,并带有ld: framework not found
)
有什么建议吗?
作为一种解决方法,我可以将其划分为两个目标:一个用于OSX,另一个用于其他任何目标,但这已经使通用框架的概念脱轨了。
我经常发现自己在NSArray中将对象转换为我的类型,当我想用点符号(而不是getter)访问它们的特定属性而不创建额外的变量.
是否有任何很酷的功能或技巧告诉objective-c我要将哪一类对象存储到NSArray中,以便编译器将数组中的对象视为我的类型,而不是id?
我正在使用MPVolumeView为avplayer airplay播放选择airplay设备.是否有任何可能的非私有API替代方案,所以我可以提供自己的UI控件来挑选airplay设备?
通过引用API,我的意思是,我只需要:
我知道AudioToolbox框架提供了一些额外的API来处理AudioSession,但我发现重新路由音频的唯一方法是AVAudioSession:
- (BOOL)overrideOutputAudioPort:(AVAudioSessionPortOverride)portOverride error:(NSError **)outError`
Run Code Online (Sandbox Code Playgroud)
只允许将音频重新路由到内置扬声器.也许还有其他方法如何在那里实现它?(我也只找到了如何检索AirplayDevice的名称作为currentAudioRoute的描述的方式 - 使用AVPlayer获取AirPlay设备的名称)
ios ×4
swift ×4
objective-c ×3
xcode ×3
swift2 ×2
airplay ×1
audiotoolbox ×1
breakpoints ×1
cocoa-touch ×1
foundation ×1
ios7 ×1
iphone ×1
llvm ×1
macos ×1
sequence ×1
transient ×1