我想将转换Float
成Int
斯威夫特.像这样的基本转换不起作用,因为这些类型不是基元,与Objective-C中的float
s和int
s 不同
var float: Float = 2.2
var integer: Int = float as Float
Run Code Online (Sandbox Code Playgroud)
但是这会产生以下错误消息:
'Float'不能转换为'Int'
知道如何将属性转换Float
为Int
?
有没有办法在Swift语言中创建一个抽象类,或者这是一个像Objective-C一样的限制?我想创建一个类似于Java定义为抽象类的抽象类.
我想用快速语言创建一个抽象函数.可能吗?
class BaseClass {
func abstractFunction() {
// How do I force this function to be overridden?
}
}
class SubClass : BaseClass {
override func abstractFunction() {
// Override
}
}
Run Code Online (Sandbox Code Playgroud) 如何在iOS8中获取所有集合的列表,包括相机胶卷(现在称为瞬间)?
在iOS 7中,我使用ALAssetGroup枚举块,但这不包括iOS时刻,这似乎相当于iOS7中的Camera Roll.
void (^assetGroupEnumerator)(ALAssetsGroup *, BOOL *) = ^(ALAssetsGroup *group, BOOL *stop)
{
if (group == nil) {// We're done enumerating
return;
}
[group setAssetsFilter:[ALAssetsFilter allAssets]];
if ([[sGroupPropertyName lowercaseString] isEqualToString:@"camera roll"] && nType == ALAssetsGroupSavedPhotos) {
[_assetGroups insertObject:group atIndex:0];
} else {
[_assetGroups addObject:group];
}
};
// Group Enumerator Failure Block
void (^assetGroupEnumberatorFailure)(NSError *) = ^(NSError *error) {
SMELog(@"Enumeration occured %@", [error description]);
};
// Enumerate Albums
[_library enumerateGroupsWithTypes:kSupportedALAlbumsMask
usingBlock:assetGroupEnumerator
failureBlock:assetGroupEnumberatorFailure];
}];
Run Code Online (Sandbox Code Playgroud) 我想在CoreData中为托管对象存储枚举状态
enum ObjStatus: Int16 {
case State1 = 0
case State2 = 1
case State3 = 3
}
class StateFullManagedObject: NSManagedObject {
@NSManaged var state: Int16
}
Run Code Online (Sandbox Code Playgroud)
最后一步是将StateFullManagedObject的状态变量转换为ObjStatus以进行直接比较,这对我不起作用.例如,我不能在Int16和Int16枚举之间使用==运算符.我得到的编译时错误是
Int16无法转换为'MirrorDisposition'
.见下面的条件:
var obj: StateFullManagedObject = // get the object
if (obj.state == ObjStatus.State1) { // Int16 is not convertible to 'MirrorDisposition'
}
Run Code Online (Sandbox Code Playgroud)
如何在Int16和枚举之间进行比较/分配?
是否有BOOL或其他方式知道viewDidLoad:是否已被调用?
每次我的视图进入活动状态时,我都需要更改视图属性,但如果视图尚未加载,我不想过早地触发viewDidLoad:.如果没有方法轻易告诉viewDidLoad:是否已被调用,我只需在视图控制器init 中将一个名为loaded set 的BOOL添加到NO,然后在输入active后更改视图属性(如果已加载为YES)或在viewWillAppear中:如果加载为NO,则将加载设置为YES.
是否可以使用本机Swift数据结构(如数组和字典)来键值代码(KVC)?键值编码仍可用于Swift中的NSFoundation结构,就像在Objective C中一样.
例如,这是有效的:
var nsarray: NSArray = NSArray()
// Fill the array with objects
var array: NSArray = nsarray.valueForKeyPath("key.path")
Run Code Online (Sandbox Code Playgroud)
但这是无效的:
var swiftarray: Array = []
// Fill the array with objects
var array = swiftarray.valueForKeyPath("key.path") // Invalid, produces a compile-time error
Run Code Online (Sandbox Code Playgroud) 这个答案非常相似,除了我想为静止图像生成直方图.
下面是我正在做的,它给出了所有0数据的直方图.让这个工作有一些技巧吗?
GPUImageFilter *filter = [[GPUImageHistogramFilter alloc] initWithHistogramType:kGPUImageHistogramRGB];
GPUImagePicture *original = [[[GPUImagePicture alloc] initWithImage:image] autorelease];
GPUImageGammaFilter *gammaFilter = [[GPUImageGammaFilter alloc] init];
[original addTarget:gammaFilter];
[gammaFilter addTarget:filter];
GPUImageHistogramGenerator *histogramGraph = [[GPUImageHistogramGenerator alloc] init];
[histogramGraph forceProcessingAtSize:CGSizeMake(256.0, 330.0)];
[filter addTarget:histogramGraph];
GPUImageAlphaBlendFilter *blendFilter = [[GPUImageAlphaBlendFilter alloc] init];
blendFilter.mix = 0.75;
[blendFilter forceProcessingAtSize:CGSizeMake(256.0, 330.0)];
[original addTarget:blendFilter];
[histogramGraph addTarget:blendFilter];
[blendFilter addTarget:gpuImageView];
[original processImage];
Run Code Online (Sandbox Code Playgroud) 我将图层添加到我的视图中:
[self.layer insertSublayer:_gradient above:_another.layer];
Run Code Online (Sandbox Code Playgroud)
那么即使我在超级层上调用needDisplay,它似乎也不会被删除:
[_gradient removeFromSuperlayer];
Run Code Online (Sandbox Code Playgroud)
我怎样才能删除它?
我有一个静态函数,我想在符合协议的类上调用。
protocol P {
static func f();
}
class C: P {
static func f() {}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法将C.self
符合协议的类型存储为变量?下面没有编译,但这是我理想中想要做的:
let a: AnyClass<P> = C.self;
a.f();
Run Code Online (Sandbox Code Playgroud) 通过取消选中,可以在Interface Builder中禁用安全区域布局指南Use Safe Area Layout Guides
。如何用代码完成?
我没有注意到与该复选框直接对应的iOS11可用布尔值。
我已通过界面构建器在superview中启用了Autoresize Subviews.有没有办法以编程方式禁用一个子视图的自动调整?
swift ×6
ios ×5
inheritance ×2
uiview ×2
autoresize ×1
calayer ×1
casting ×1
core-data ×1
generics ×1
gpuimage ×1
ios11 ×1
ios8 ×1
iphone ×1
objective-c ×1
subclass ×1
swift2 ×1
viewdidload ×1
xcode9 ×1