NSAttributedString 对我来说真是难以捉摸.
我想设置一个UILabel具有不同大小的文本,我收集的NSAttributedString是要走的路,但我无法获得任何关于此的文档.
如果有人能用一个具体的例子来帮助我,我会很高兴.
例如,假设我想要的文字是:
(in small letters:) "Presenting The Great..."
(in huge letters:) "HULK HOGAN!"
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我该怎么做吗?或者甚至是一个简单明了的参考资料,我可以为自己学习?我发誓我已经尝试通过文档来理解这一点,甚至通过Stack Overflow上的其他示例,我只是没有得到它.
#import "whatever.h"
Run Code Online (Sandbox Code Playgroud)
...并不完美,但它对于诊断循环依赖性非常方便,更不用说强制执行模块化了.
您可以确定哪些课程了解其他课程 - 只需轻轻一按即可.
如果必须,您可以注释掉所有 import语句,并一次添加一个,以便诊断依赖性问题.它不一定快,但它很简单.
如果一个班级没有导入除强制标题以外的任何东西,Son,那是你在那里的一个模块化课程!
如果你的项目有十个类没有导入任何东西,那么你就知道它们是十个模块化的类 - 你不必将每个类打包到它自己的Framework或类似的东西中.简单.
但现在,随着斯威夫特的"每个人都知道所有事情"的政策,似乎只是个人保持警惕以维持模块化.个人警惕是最糟糕的一种!
我错过了什么吗?有没有办法在Swift中轻松完成这些操作?
这非常奇怪,让我疯了.我曾经有一个叫做的课Constants.就是这样typedef:
typedef enum visible_thing {
BACKGROUND,
BACKGROUND_COLOR,
MAIN_WINDOW
} VISIBLE_THING;
Run Code Online (Sandbox Code Playgroud)
而我,生活更美好!我在任何需要访问此类型的地方导入'Constants.h`,这一切都奏效了.
然后我决定去Constants上课.我拿了typedef然后把它放在另一个类中,为了清楚起见我们称之为OtherClass.我经历并改变了所有进口的Constants.h进口,OtherClass.h这就是我所做的一切,我没有触及任何其他代码.而现在整个事情都破了!
与之完美配合的方法Constants现在给我这个错误:Parse Issue - Expected a type.有没有搞错?我当然希望有人在这方面有一些线索!
更新:令人沮丧的是,这是一个似乎在没有解释的情况下自行消失的问题之一.我在下面回答了我自己的问题,通过一种解决方法,我发现需要在一个文件中多次导入相同的标头.但今天我删除了额外的#import,一切仍然有效.精氨酸.电脑!
我需要在 iOS 中用 Swift 做一些时间数学。
我必须使用dispatch_walltime. 我希望这可以被视为公理。就时间数学而言,我想我可能会得到“只是使用NSDate”的回应,但请相信:我一定会dispatch_walltime。
现在,很明显为什么有人会建议NSDate,因为当您使用NSTimeIntervalandNSDate和那些好东西时,制作自定义时间戳并比较它们并进行各种时间数学计算非常容易。
但我必须使用dispatch_time_t, 并且专门dispatch_walltime像这样创建:
//Get the timeInterval of now.
let nowInterval = NSDate().timeIntervalSince1970
//Make a timespec from it.
var nowStruct = timespec(tv_sec: Int(nowInterval), tv_nsec: 0)
//Make a walltime definition from that.
let referenceWalltime = dispatch_walltime(&nowStruct, 0)
Run Code Online (Sandbox Code Playgroud)
稍后我需要以各种方式使用该参考时间。例如,我需要获取参考时间和它发生的任何时间之间的时间间隔。
我正在尝试以与 相同的方式执行此操作NSTimeInterval,换句话说,创建一个新的并从中减去旧的:
//Repeat everything from before to make a new wall time.
let newNowInterval = NSDate().timeIntervalSince1970
var newNowStruct = …Run Code Online (Sandbox Code Playgroud) "Walltime"是Grand Central Dispatch使用的一种鲜为人知的时间格式.Apple在这里谈到它:
https://developer.apple.com/library/ios/documentation/Performance/Reference/GCD_libdispatch_Ref/
但是有一些东西真的很方便,但它是一个粘性的检票口.很难让它与其他时间格式一起玩得很好,这就是我的问题所在.
我可以通过将a NSDate转换为a 来进行壁挂timespec,然后使用dispatch_walltime:
let now = NSDate().timeIntervalSince1970
let nowWholeSecsFloor = floor(now)
let nowNanosOnly = now - nowWholeSecsFloor
let nowNanosFloor = floor(nowNanosOnly * Double(NSEC_PER_SEC))
var thisStruct = timespec(tv_sec: Int(nowWholeSecsFloor),
tv_nsec: Int(nowNanosFloor))
let wallTime = dispatch_walltime(& thisStruct, 0)
Run Code Online (Sandbox Code Playgroud)
但是主爱一只鸭子,我无法弄清楚如何让它重新变成一只鸭子NSDate.这是我的尝试:
public func toNSDate(wallTime: dispatch_time_t)->NSDate {
let wallTimeAsSeconds = Double(wallTime) / Double(NSEC_PER_SEC)
let date = NSDate(timeIntervalSince1970: wallTimeAsSeconds)
return date
}
Run Code Online (Sandbox Code Playgroud)
结果NSDate不只是关闭,而是有点滑稽,如五百年或其他什么.正如Martin R所指出的那样,问题在于它dispatch_time_t是一个不透明的值,没有时间表示.
有谁知道如何做到这一点?
编辑:如果创建壁挂时间的过程令人困惑,这基本上是正在发生的事情:
NSDate使用a定义时间,Double小数点后的所有内容都是纳秒. …
我有一个像这样的嵌套枚举,用于描述基本的相对位置:
enum Location {
enum Top {
case Left
case Right
case Center
}
enum Bottom {
case Left
case Right
case Center
}
enum Left {
case Top
case Bottom
case Center
}
enum Right {
case Top
case Bottom
case Center
}
enum Center {
case Center
}
}
Run Code Online (Sandbox Code Playgroud)
如果尝试switch使用它来运行一条语句,则所有枚举都不会出现在可能的情况下;如果尝试列出它们,则会出现错误:
func switchOverEnum(enumCase: Location) {
switch enumCase {
case .Top:
print("hey this didn't cause an error whoops no it did")
}
}
Run Code Online (Sandbox Code Playgroud)
错误是: Enum case 'Top' not …
我想编写一个查询OpenLibrary的RESTful API,执行以下操作:
到目前为止,这是我能够创造的所有成功:
http://openlibrary.org/query.json?type=/type/edition&authors=/authors/OL1A&covers=&title=&publish_date=&description=
Run Code Online (Sandbox Code Playgroud)
您可以剪切并粘贴到浏览器中以查看结果,OpenLibrary不需要API密钥.
我的主要障碍似乎是:
有帮助吗?
所以,我想做的事情如下:
+ (void) replace_text_with: (NSString *) const predefined_text_style;
Run Code Online (Sandbox Code Playgroud)
我在其他地方的Constants.h和Constants.m文件中使用常量字符串定义了一些文本样式.
我想要求传递的参数predefined_text_style是其中一个常量,如果不可能将其专门限制为那些常量,至少要求它是某种常量.这可能吗?
这个问题有一些版本,其中OP说的是"如何在下午5点在我的应用程序中触发方法调用?"
然后人们回答"你怎么知道你的应用程序将在下午5点开放"?这成为另一个问题,原始问题就消失了.
那么请避免这种情况吗?
我只想说我想在5:25:28:50用户打开应用时正好在下午5:25和30秒发出方法调用.
如果不清楚,我的意思是我希望我可以使用的绝对时间是否我的用户在5:25:26:35,5:25:20:13或5:29:49:99打开应用程序.
在SO周围阅读,似乎共识(以及Apple文档推荐)是使用某种形式的mach_absolute_time和dispatch_somethingOrOther.我找不到任何真实的具体例子.
我发现的最接近的是http://www.manpagez.com/man/3/dispatch_walltime/,它给出了这个例子:
Create a milestone on Tuesday, January 19, 2038:
struct timespec ts;
ts.tv_sec = 0x7FFFFFFF;
ts.tv_nsec = 0;
milestone = dispatch_walltime(&ts, 0);
Run Code Online (Sandbox Code Playgroud)
我就像"尤里卡!" 直到我意识到a)我不知道如何进行将2038年1月19日变为0x7FFFFFFF的十六进制转换,b)我不明白timespec结构是如何构造的,以及我如何将小时和分钟添加到其中,以及c)milestone = dispatch_walltime(&ts, 0)在Swift中抛出错误.
有人可以帮忙吗?如果可能,使用5:25 pm和30秒的具体示例?
我正在尝试从用户默认值中检索一个数字并将其相乘.这是我的代码:
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
NSDecimalNumber *current = [prefs objectForKey:@"account"];
NSDecimalNumber *multiplier = [NSDecimalNumber decimalNumberWithString:@"1.15"];
NSDecimalNumber *floo = [current decimalNumberByMultiplyingBy: multiplier];
Run Code Online (Sandbox Code Playgroud)
一旦碰到这floo条线,它就会给我一个非常可怕的崩溃.巨大的错误gobbledygook开始于:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException',
reason: '-[__NSCFNumber decimalNumberByMultiplyingBy:]: unrecognized selector
sent to instance 0x8c7b1e0'
Run Code Online (Sandbox Code Playgroud)
这看起来很简单,但我的天啊!发生了什么?
对此我的头撞了一下.应该这么简单.
在里面的操场上跑步 MyClass:
func configureButton(){
let btn: UIButton = UIButton(frame: CGRectMake(5, 75, 90, 20))
btn.backgroundColor = UIColor.greenColor()
btn.addTarget(self,
action: #selector(MyClass.buttonTapped),
forControlEvents: UIControlEvents.TouchUpInside)
addSubview(btn)
btn.setTitleColor(UIColor.blackColor(), forState: .Normal)
btn.titleLabel?.font = UIFont(name: "Helvetica", size: 40)
btn.titleLabel?.text = "tap me"
}
Run Code Online (Sandbox Code Playgroud)
该按钮显示绿色,按下时可以工作,但不显示文本.
我需要存储一系列任意长度的1和0.
我本来打算使用整数,但后来我发现我真正需要的只是一个比特流.
NSMutableData似乎就是这样.除了所有我看到有人在谈论的是如何在其上设置字节,或在其中存储jpegs或字符串.我需要比这更精细.
给定一系列的1和0,例如:110010101011110110,如何将其变为NSData对象 - 如何将其取出?
NSData的appendBytes:length:和mutableBytes都在字节级别,我需要从低位开始.当字节本身由1和0的集合组成时,将那些1和0存储为字节是没有意义的.我找不到任何告诉我如何设置位的麻烦.
这是一些虚假代码:
NSString *sequence = @"01001010000010"; //(or int sequence, or whatever)
for (...){//iterate through whatever it is--this isn't what I need help with
if ([sequence intOrCharOrWhateverAtIndex: index] == 0) {
//do something to set a bit -- this is what I need help with
} else {
//set the bit the other way -- again, this is what I need help with
}
}
NSData *data = [NSData something]; //wrap it up and save …Run Code Online (Sandbox Code Playgroud)