小编use*_*028的帖子

全局常量文件在Swift中

在我的Objective-C项目中,我经常使用全局常量文件来存储通知名称和键等内容NSUserDefaults.它看起来像这样:

@interface GlobalConstants : NSObject

extern NSString *someNotification;

@end

@implementation GlobalConstants

NSString *someNotification = @"aaaaNotification";

@end
Run Code Online (Sandbox Code Playgroud)

我如何在Swift中做同样的事情?

objective-c ios swift

322
推荐指数
10
解决办法
15万
查看次数

NSDate从一天开始到一天结束

    -(NSDate *)beginningOfDay:(NSDate *)date
{
    NSCalendar *cal = [NSCalendar currentCalendar];
    NSDateComponents *components = [cal components:( NSMonthCalendarUnit | NSYearCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit ) fromDate:date];

    [components setHour:0];
    [components setMinute:0];
    [components setSecond:0];

    return [cal dateFromComponents:components];

}

-(NSDate *)endOfDay:(NSDate *)date
{
    NSCalendar *cal = [NSCalendar currentCalendar];
    NSDateComponents *components = [cal components:(  NSMonthCalendarUnit | NSYearCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit ) fromDate:date];

    [components setHour:23];
    [components setMinute:59];
    [components setSecond:59];

    return [cal dateFromComponents:components];

}
Run Code Online (Sandbox Code Playgroud)

当我打电话:[self endOfDay:[NSDate date]]; 我得到了本月的第一天......为什么?我使用这两种方法,因为我需要一个从第一个日期的第一秒开始的间隔(beginningOfDay:date1)到第二个日期的最后一秒(endOfDay:Date2)......

nsdate nsdatecomponents ios

93
推荐指数
9
解决办法
4万
查看次数

CCATS在iOS AppStore和加密

这将是一个长期的问题......实际上是一组相关的问题......我想制作一个iOS应用程序,它将在Apples App Store上销售,(显然).我的应用程序会将一些敏感的用户数据存储在文档目录中.出于安全考虑,我想到了一个可以保护数据的密码系统.这里的乐趣开始......数据安全机制几乎是牢不可破的.我将使用AES-128/256,TwoFish 128/256和Serpent 128/256.用户可以选择在哪里使用...我可能正在使用双重加密,数据使用AES加密一次,然后使用Serpent或thous的任意组合加密.

我显然需要检查应用商店中的"使用加密"按钮.问题是:

1)我需要什么认证CCATS或ERN?

来自:

http://tigelane.blogspot.ro/2011/01/apple-itunes-export-restrictions-on.html

  1. 转到此链接并使用他的说明.这是一篇很棒的文章:http://zetetic.net/blog/2009/08/03/mass-market-encryption-commodity-classification-for-iphone-applications-in-8-easy-steps/
  2. 对所有情况执行步骤1和2.如果您构建了自己的加密机制,那么请遵循整个帖子.如果您使用SSL或其他公共域加密,则可以在拥有SNAP-R帐户后停止.

我显然需要完成整个认证过程......我绝对建立了自己的机制.

2)完整的CCATS可以100%在线完成吗?

在"8个简单的步骤"帖子中,它说我需要通过(蜗牛)邮件发送一些文件.然后用户说以后就没有必要了.注意:这些博客文章看起来很旧(2年).

优秀的描述!仅供参考:获得SNAP-R的CIN/PIN的过程现在完全是电子的

另一位用户说:

您可能需要考虑更新您的帖子.国际清算银行顾问告诉我,我们不再需要在申请表和支持文件的硬拷贝中邮寄邮件.这对某些人来说可能是微不足道的,但是在国际航运中浪费80美元就是80美元.

我希望我不需要通过邮件发送所有文件,因为从欧盟将它们带到美国需要一段时间.

欧盟有没有人最近使用过ERN/CCATS流程?

3)我也看到他们要求你提供传真号码......我没有传真.这是一个大问题吗?

如果真的有必要在线传真服务可以吗?

4)我是否需要详细解释整个加密机制?或者只是算法?我是否因为"对大众市场加密密码系统太好"而被拒绝?

大多数情况下,我是否需要解释或声明某些数据会被加密两次?或者"将存储数据加密到磁盘上"是一个足够好的解释吗?

5)我将使用一些密码扩展算法和散列(HMAC,使用SHA-2,也许是SHA-3)......我是否也需要报告?

encryption appstore-approval ios

17
推荐指数
2
解决办法
7226
查看次数

NSThread sleepfortimeinterval阻止主线程

我想模拟与服务器的通信.由于远程服务器会有一些延迟,我想使用它上面的后台线程

 [NSThread sleepForTimeInterval:timeoutTillAnswer];
Run Code Online (Sandbox Code Playgroud)

该线程是使用NSThread子类创建的并且已经启动...但是我注意到sleepForTimeInterval阻塞了主线程...为什么??? 默认情况下,NSThread不是backgroundThread吗?

这是线程的创建方式:

   self.botThread = [[PSBotThread alloc] init];
    [self.botThread start];
Run Code Online (Sandbox Code Playgroud)

更多信息:这是bot线程子类

- (void)main
{
    @autoreleasepool {
        self.gManager = [[PSGameManager alloc] init];
        self.comManager = [[PSComManager alloc] init];
        self.bot = [[PSBotPlayer alloc] initWithName:@"Botus" andXP:[NSNumber numberWithInteger:1500]];
        self.gManager.localPlayer = self.bot;
        self.gManager.comDelegate = self.comManager;
        self.gManager.tillTheEndGame = NO;
        self.gManager.localDelegate = self.bot;
        self.comManager.gameManDelegate = self.gManager;
        self.comManager.isBackgroundThread = YES;
        self.comManager.logginEnabled = NO;
        self.gManager.logginEnabled = NO;
        self.bot.gameDelegate = self.gManager;
        BOOL isAlive = YES;
        // set up a run loop
        NSRunLoop *runloop = [NSRunLoop currentRunLoop];
        [runloop addPort:[NSMachPort …
Run Code Online (Sandbox Code Playgroud)

nsthread ios

15
推荐指数
1
解决办法
3万
查看次数

带ARC的单身人士

我的问题如下:我有一个单例类型的对象(我正在使用ARC),在实现文件中有这个代码

+(id)sharedInstance 
{
    static DataManager *sharedInstance;
    if (sharedInstance == nil) {
        sharedInstance = [[DataManager alloc] init];
    }
    return sharedInstance;
}

+(NSManagedObjectContext *)getManagedContext
{
    AppDelegate *applicationDelegate =(AppDelegate *)[[UIApplication sharedApplication] delegate];
    return [applicationDelegate managedObjectContext];
}

+(void)saveContext:(NSManagedObjectContext *)context
{
    NSError *error;
    if (![context save:&error]) {
        NSLog(@"Whoops, couldn't save: %@", [error localizedDescription]);
    }
}

#pragma mark - Data management methods

+(void)addPersonWithName:(NSString *)name andPicture:(UIImage *)picture
{
    NSManagedObjectContext *context = [self getManagedContext]; //no problem here
    //some code 
    [self saveContex:context]; // no known class method for selector …
Run Code Online (Sandbox Code Playgroud)

singleton objective-c automatic-ref-counting

14
推荐指数
1
解决办法
2万
查看次数

iOS7中的UITextView内容大小不同

我正在使用一个UITextView可以通过点击"更多"按钮进行扩展.问题如下:

在iOS6上我使用这个,

self.DescriptionTextView.text =  @"loong string";

if(self.DescriptionTextView.contentSize.height>self.DescriptionTextView.frame.size.height) { 
    //set up the more button
}
Run Code Online (Sandbox Code Playgroud)

问题是在iOS7上contentSize.height返回的值不同于它在iOS6上返回的值(远远小于).为什么是这样?怎么解决?

cocoa-touch objective-c uitextview ios ios7

14
推荐指数
2
解决办法
2万
查看次数

UISegmentedControl获取先前选择的索引

我有一个带有segmentedValueChanged方法的UISegmentedControl.我需要在调用此方法之前找出所选索引的内容.这该怎么做?

uisegmentedcontrol ios

6
推荐指数
1
解决办法
3002
查看次数

在UIAlertView上同时点击2个按钮会冻结应用程序

我有这样的错误:如果我同时挖掘上的两个按钮UIAlertViewUIAlertView代表将不会被调用,并且整个屏幕冻结(没有什么是可点击,即使警报视图被罚下场).

有没有人见过这个bug?有没有办法限制UIAlertView只有一个按钮?

- (IBAction)logoutAction:(id)sender {
        self.logoutAlertView = [[UIAlertView alloc] initWithTitle:@"Logout"
                                                              message:@"Are you sure you want to logout?"
                                                             delegate:self
                                                    cancelButtonTitle:@"No"
                                                    otherButtonTitles:@"Yes", nil];
        [self.logoutAlertView show];
}

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    if ([alertView isEqual:self.logoutAlertView]) {
        if (buttonIndex == 0) {
            NSLog(@"cancelled logout");
        } else {
            NSLog(@"user will logout");
            [self performLogout];
        }
        self.logoutAlertView.delegate = nil;
    }
}
Run Code Online (Sandbox Code Playgroud)

freeze uialertview ios

5
推荐指数
1
解决办法
580
查看次数

SKSpriteNode在随机路径上的平滑运动

我正在做一个小SpriteKit游戏.我想让这个游戏中的"敌人"在玩家周围的随机路径上移动(这是静态的).

如果我只是在屏幕上选择一个随机点并将动画设置为动画然后重复(例如:每2秒),这将给动作带来非常锯齿状的感觉.

如何使这个随机运动非常平滑(例如:如果敌人决定转身,它将在平滑的U转弯路径上而不是锯齿状的锐角).

PS:敌人必须避免玩家和对方.

random objective-c ios sprite-kit

4
推荐指数
1
解决办法
4046
查看次数

UIColor在NSUserDefaults Swift/iOS 8中

我正在为iOS编写一个Swift应用程序.我需要设置并稍后检索NSUserDefaults的UIColor对象.

我这样设置:

var userSelectedColor : NSData? = (NSUserDefaults.standardUserDefaults().objectForKey("UserSelectedColor") as? NSData)

if (userSelectedColor == nil) {
    var colorToSetAsDefault : UIColor = UIColor.redColor()
    var data : NSData = NSKeyedArchiver.archivedDataWithRootObject(colorToSetAsDefault)
    NSUserDefaults.standardUserDefaults().setObject(data, forKey: "UserSelectedColor")
    NSUserDefaults.standardUserDefaults().synchronize()
    println("SET DEFAULT USER COLOR TO RED")
}
Run Code Online (Sandbox Code Playgroud)

但我似乎无法恢复它,因为在Swift中似乎缺少NSKeyedArchiver上的unarchive方法.

var userSelectedColorData: NSData? = (NSUserDefaults.standardUserDefaults().objectForKey("UserSelectedColor") as NSData)
var userSelectedColor : UIColor? = NSKeyedArchiver.unarchiveObjectWithData(userSelectedColorData)
Run Code Online (Sandbox Code Playgroud)

在Swift/iOS 8中执行此操作的正确方法是什么?

nsuserdefaults swift ios8

4
推荐指数
1
解决办法
1281
查看次数