返回打开、关闭或从一天中的时间开始关闭的功能

2024-04-14

我有很多小时的操作时间,我想确定商店是否在 30,29,28,27... 分钟内打开、关闭或即将关闭,我在 Xcode/Objectic-C 中执行此操作。现在我必须在 50 个不同的操作小时内执行此操作。我已经制作了一个函数来执行此操作,但它不是很有效并且涉及大量 if-else 语句。这是营业时间示例

Monday - Thursday
7:30am - Midnight
Friday
7:30am - 10:00pm
Saturday
9:00am - 10:00pm 
Sunday
9:00am - Midnight 

这是我的功能以及我如何处理它

-(BOOL) dateAndTime:(NSDate*)date getStartDay:(NSInteger)startDay getStartHour:(NSInteger)startHour getStartMin:(NSInteger)startMin getEndDay:(NSInteger)endDay getEndHour:(NSInteger)endHour getEndMin:(NSInteger)endMin{

    NSCalendar *calendar = [NSCalendar currentCalendar];


    const NSCalendarUnit units = NSWeekdayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit;
    NSDateComponents *comps = [calendar components:units fromDate:date];

    if (comps.weekday == 1) {
        comps.weekday = 7;
    }
    else comps.weekday = comps.weekday - 2;

    NSDate *startOfToday;
    [[NSCalendar currentCalendar] rangeOfUnit:NSDayCalendarUnit startDate:&startOfToday interval:NULL forDate:date];

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    NSTimeZone *timeZone = [NSTimeZone localTimeZone];
    [dateFormatter setDateFormat:@"HH:mm"];
    [dateFormatter setTimeZone:timeZone];


    NSString *dateString = [dateFormatter stringFromDate:date];

    NSDate *startDate = [dateFormatter dateFromString:[NSString stringWithFormat:@"%ld:%ld", (long)startHour, (long)startMin]];
    NSDate *endDate = [dateFormatter dateFromString:[NSString stringWithFormat:@"%ld:%ld", (long)endHour, (long)endMin]];

    NSString *startDateString = [dateFormatter stringFromDate:startDate];
    NSString *endDateString = [dateFormatter stringFromDate:endDate];


    if ([startDateString compare:dateString] == NSOrderedAscending && [dateString compare:endDateString] == NSOrderedAscending && startDay <= comps.weekday && comps.weekday <= endDay) {
        return YES;
    }
    else return NO;

}

现在我从 0 到 6(0 表示星期一)输入当天的时间,然后输入 24 小时制的时间。然后像这样使用它:

    if ([self dateAndTime:date getStartDay:0 getStartHour:7 getStartMin:30 getEndDay:3 getEndHour:23 getEndMin:30] == YES)
        text = @"Open";

    else if ([self dateAndTime:date getStartDay:0 getStartHour:23 getStartMin:30 getEndDay:3 getEndHour:24 getEndMin:0] == YES)
        text = [NSString stringWithFormat:@"Closes in %@ min", countdownNumber];
else text = @"Closed";

正如您所看到的,对一周中的所有日子和每天的所有时间执行此操作需要大量 if 语句,并且非常糟糕。仅就这一示例而言,它需要 8 个 if-else 语句(非常耗时)

现在这个问题的基础是如何才能提高效率/什么是更好的方法来做到这一点,同时仍然能够进行最后 30 分钟的倒计时?

我做了一些研究,但找不到任何有关闭倒计时且高效的东西。

如果您需要或想查看,这里是示例的完整 if-else 语句https://gist.github.com/spennyf/b0b18e31c3e9deaa0455 https://gist.github.com/spennyf/b0b18e31c3e9deaa0455

感谢您提前提供帮助和/或建议:)

EDIT

这是我的 .m 文件的顶部我有这个

@interface HomeTableViewController () {

    ShopHours WeekSchedule[];
}

@end

但这给了我在评论中提到的编译错误,如何设置这个变量以便它可以在整个 .m 文件中使用?现在我只是将它作为功能的额外栏杆传递,这应该没问题。 :)

如果我确定该场所开放后 30 分钟后该场所将关闭,那么设置 if 语句的最佳方法是什么?您能否添加一个地方是否在一天中的部分时间/午夜以上开放的设置。

感谢你的帮助 :)


尝试从不同的方向解决问题。以以下内容为起点,并非所有内容均已解释 - 如果您说不知道什么是字典那么你应该研究它。

审视问题

你有一个table开门和关门时间,检查您的商店是否开门应该查找此表 - 就像您在“现实生活”中一样。要知道商店是否营业,您需要知道工作日 - 它告诉您要咨询表中的哪一行,以及时间 - 您可以将其与表中该行的两个时间进行比较。

要表示程序中的表,通常使用array,要表示两个关联的时间 - 例如开盘时间和关盘时间 - 您可以使用record, object or 字典 etc.

你如何代表一天中的某个时间?一般的时间和日期计算很复杂,但是在工作日之后您需要知道的就是当天的时间,并且假设您不担心闰秒(您不担心),您可以假设有 24 小时 60 分钟一天中的每个时间,这样您就可以将时间存储为自午夜以来的分钟数 - 为您提供一个数字。如果您使用自午夜以来的分钟数来确定商店是开门还是关门,您可以避免复杂的日期比较。

一些代码

正如您的代码已经表明您可以使用NSCalendar获取任意时间的星期几、小时和分钟NSDate.

如何获取自午夜以来的小时和分钟到分钟,这是简单的算术,但您需要执行几次,所以也许一个简单的macro将时间转换为小时和分钟:

#define TO_MINUTES(hour, min) (hour * 60 + min)

开放时间表如何表示?

那么你可以使用NSArray,按工作日索引,其中每个元素都是NSDictionary包含两个键/值对 - 用于打开和关闭时间。但是,您的时间只是整数,即自午夜以来的分钟数,并将整数存储在NSDictionary需要将它们包装为NSNumber对象。 (如果这没有意义,那么是时候做一些研究了!)

另一种方法是为表使用 C 风格的数组和结构 - 这会很好地工作,因为您只存储整数。

下面是一个代表打开和关闭时间的 C 结构体定义:

typedef struct
{
   NSInteger openTime;
   NSInteger closeTime;
} ShopHours;

通过该宏和上面的宏,您可以轻松定义表示商店营业时间的常量数组:

ShopHours WeekSchedule[] =
{
   {0, 0}, // index 0 - ignore
   { TO_MINUTES(9, 0),  TO_MINUTES(24, 0) }, // index 1 - Sunday
   { TO_MINUTES(7, 30), TO_MINUTES(24, 0) }, // index 2 - Monday
   ...
   { TO_MINUTES(9, 0),  TO_MINUTES(22, 0) }, // index 7 - Saturday
};

在实际代码中,您可以从数据文件中读取它,但现在上面的全局数组就可以了。

(请注意,索引 0 被忽略 -NSDateComponents从 1 开始对星期日和数组(C 风格和NSArray) 从 0 开始索引,简单地忽略第 0 个元素就可以避免这样做- 1在你的代码中。)

你已经有了可以破解的代码NSDate into NSDateComponents,使用它您可以轻松获取自午夜以来的工作日和分钟数:

NSInteger weekday = comps.weekday;
NSInteger minutes = TO_MINUTES(comps.hour, comps.minute);

use weekday来索引WeekSchedule表并比较minutes到这两个条目就完成了,例如商店是否营业:

if (minutes >= WeekSchedule[weekday].openTime && minutes <= WeekSchedule[weekday].closeTime)
{
    // shop is open...
}
else
{
    // shop is closed...
}

您可以将上述内容包装到一个方法中,该方法给定日期告诉您商店的状态:

- (NSString *) shopState:(NSDate *)dateAndTime
{
   // break out the weekday, hours and minutes...
   // your code from the question

   NSInteger weekday = comps.weekday;
   NSInteger minutes = TO_MINUTES(comps.hour, comps.minute);

   if (minutes >= WeekSchedule[weekday].openTime && minutes <= WeekSchedule[weekday].closeTime)
   {
      // shop is open...
      // determine if its closing within 30 mins and return an appropriate string
   }
   else
   {
      // shop is closed...
      return @"Closed";
   }
}

正如您将看到的,这个解决方案比您采用的方法要短得多。

HTH

附录 - 改进

正如罗布·纳皮尔 (Rob Napier) 在评论中指出的那样,如果情况不明显,上述解决方案的概述就是这样,并忽略了商店在午夜营业等情况。以下是您可能需要考虑的一些事项:

  1. 商店每天营业超过一时段:有些商店在午餐时间关门,餐馆可能在午餐和晚上营业,等等。要处理这个问题,您需要每天的开放/关闭时间列表,而不仅仅是一对。一旦确定了工作日测试,就需要迭代这样的列表了。

  2. 午夜营业的商店:这只是(1)的一个特例,想一想......

  3. 时区:在问题中的代码和此答案中的代码中,假设打开/关闭时间和测试时间均来自同一时区。例如,如果您希望帮助加拿大的人确定德国的一家商店目前是否营业并且可以打电话,您需要考虑到时差。

  4. 夏令时:这是 Rob 在评论中提到的极端情况。当 DST 发生更改时,可能会跳过或重复一个小时。仅当您支持在该时间段内开门/关门的商店时,这才是一个问题 - 在整个更改期间开门的商店不需要特殊处理。NSCalendar将给出从您测试时起的正确小时/分钟,您需要处理对打开/关闭时间的任何调整。例如,假设一家商店在凌晨 2 点关门,DST 更改会从凌晨 2 点跳回凌晨 1 点,该商店在凌晨 1:30 开门吗?第一次是这样,但是第二次呢?决定这个问题是一个超越时间计算的问题。

您需要决定是否以及如何解决这些问题。

更多提示

好吧,圣诞节到了(随你喜欢吧——吃得慢,大脑迟钝,送礼物的时间等等。;-))

我看到您在另一个问题中问过如何动态创建表而不是使用静态表,所以您已经涵盖了。

让我们考虑白天和午夜开放的多个开放时间:

  1. 数组的数组可以工作,但您也可以只保留一整周的开放时间数组。例如。改变TO_MINUTES宏也采用天数并将所有时间存储为自周日 0000 点起的分钟数。现在,不再索引数组来查找迭代或搜索它的日期 - 数组是有序的,因此您可以根据需要进行二分搜索,但简单的迭代可能足够快(一周中有多少个打开/关闭周期? )

  2. 通过将关闭时间设置为第二天 (1) 涵盖了所有在午夜开放的情况but周六 -> 周日,包括 30 分钟内关闭的计算。

  3. 要处理周六 -> 周日,首先将时间段分为周六晚上和周日早上部分。将它们添加到您的数组中,它们将是第一个(周日清晨)和最后一个(周六深夜)条目。现在,当您确定距离关门时间还有多少分钟时,请检查关门时间是否为周六午夜(例如,周六午夜)。TO_MINUTES(7, 24, 0)),如果是,请检查第一个条目的开放时间是否为星期日 0000 点,如果是,则要调整关闭时间以进行 30 分钟检查(添加第一个时段的长度)。

这将处理多个时段并在午夜开放。它不处理 DST、商店假期等 - 您需要决定处理多少。用于夏令时NSTimeZone找出时间变化的时间和变化程度(并不总是 1 小时),找出“重复”和“缺失”时间 - 但请记住,这只是您的商店在这些时间段内实际开门/关门的问题。

新年到了;-)

说真的,Rob 决定提供几乎完整的代码,但使用 Objective-C 对象和许多方法,所以我想我应该添加我的代码进行比较,因为它提出了一个有趣的问题。

首先应该注意的是相似性,从算法上来说,这两种解决方案很接近 - 环绕的处理方式不同,但任何一种方法都可以以任何方式完成,因此这并不重要。

区别在于数据结构的选择 - 对于如此简单的东西,您应该使用 C 结构和数组还是 Objective-C 对象?框架本身有很多结构类型 - 例如NSRect et al- 在 Objective-C 代码中使用它们没有任何问题。选择不是黑白的,存在一个灰色区域,其中任何一个都可能合适,并且这个问题可能属于该灰色区域。因此,这是每天多次开放的解决方案:

// convenience macro
// day 1 = Sunday, ... 7 = Saturday
#define TO_MINUTES(day, hour, min) ((day * 24 + hour) * 60 + min)

#define WEEK_START TO_MINUTES(1, 0, 0)
#define WEEK_FINISH TO_MINUTES(7, 24, 0)

typedef struct
{  NSInteger openTime;
   NSInteger closeTime;
} ShopHours;

// Opening hours
ShopHours WeekSchedule[] =
{  { TO_MINUTES(1, 0, 0),  TO_MINUTES(1, 0, 15) }, // Sat night special, part of Sat 11:30pm - Sun 0:15am
   { TO_MINUTES(1, 9, 0),  TO_MINUTES(1, 24, 0) }, // Sun 9am - Midnight
   { TO_MINUTES(2, 7, 30), TO_MINUTES(2, 24, 0) }, // Mon 7:30am - Midnight
   { TO_MINUTES(3, 7, 30), TO_MINUTES(3, 24, 0) },
   { TO_MINUTES(4, 7, 30), TO_MINUTES(5, 2, 0)  }, // Midweek madness, Wed 7:30am - Thursday 2am
   { TO_MINUTES(5, 7, 30), TO_MINUTES(5, 24, 0) },
   { TO_MINUTES(6, 7, 30), TO_MINUTES(6, 22, 0) }, // Fri 7:30am - 10pm
   { TO_MINUTES(7, 9, 0),  TO_MINUTES(7, 22, 0) }, // Sat 9am - 10pm
   { TO_MINUTES(7, 23, 30),TO_MINUTES(7, 24, 0) }, // Sat night special, part of Sat 11:30pm - Sun 0:15am
};

- (NSString *) shopState:(NSDate *)dateAndTime
{  NSCalendar *calendar = [NSCalendar currentCalendar];

   const NSCalendarUnit units = NSWeekdayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit;
   NSDateComponents *comps = [calendar components:units fromDate:dateAndTime];

   NSInteger minutes = TO_MINUTES(comps.weekday, comps.hour, comps.minute);
   NSLog(@"%ld (%ld, %ld, %ld)", minutes, comps.weekday, comps.hour, comps.minute);

   unsigned periods = sizeof(WeekSchedule)/sizeof(ShopHours);
   for (unsigned ix = 0; ix < periods; ix++)
   {  if (minutes >= WeekSchedule[ix].openTime)
      {  if (minutes < WeekSchedule[ix].closeTime)
         {
            // shop is open, how long till close time?
            NSInteger closeTime = WeekSchedule[ix].closeTime;
            // handle Sat -> Sun wraparound
            if (closeTime == WEEK_FINISH && WeekSchedule[0].openTime == WEEK_START)
               closeTime += WeekSchedule[0].closeTime - WEEK_START;
            NSInteger closingIn = closeTime - minutes;

            if (closingIn <= 30)
               return [NSString stringWithFormat:@"Closes in %ld min", closingIn];
            else
               return @"Open";
         }
      }
      else // minutes < WeekSchedule[ix].openTime
         break;
   }
   return @"Closed";
}

夏令时问题

我一开始认为这不是问题,罗布在评论中提出了它,现在他认为这不是问题,但事实并非如此——尽管它可能有点学术性。

如果你不使用这不是问题NSDate来表示被查询的时间,Rob 的解决方案就采用了这条路线。

原来的问题和上面的代码确实使用NSDate并将工作日、小时和分钟分解为NSDateComponents。考虑一下这样的情况:由于夏令时的变化,凌晨 2 点变成了凌晨 1 点,商店通常在凌晨 1:30 关门。如果您从NSDate凌晨 1 点之前的值并递增,例如每次 10 分钟,直到您获得一个小时值components:fromDate:大于 2,您将看到如下值:00:50、01:00、01:10、...、01:50、01:00、01:10、...、01:50、02:00、 02:10。每次测试都会报告商店在第一个 01:30 过去后关闭 30 分钟,然后它将重新开放 30 分钟,直到下一个 01:30 过去!

仅当您从以下位置开始时才会出现此问题NSDate,如果您简单地将工作日/小时/分钟作为输入,则不会发生这种情况。任何一种方法(结构或对象)都可以以任何方式操作,您只需决定这是否是您希望解决的问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

返回打开、关闭或从一天中的时间开始关闭的功能 的相关文章

  • UITableViewCell 内的 UIPageViewController

    嘿我想问如何在 UITableViewCell 内实现 UIPageViewController 我一直在阅读周围的内容 但到目前为止似乎对任何尝试的人都不起作用 我希望得到一些提示 不需要完整的答案 谢谢 目前还不清楚你到底想做什么 但让
  • 如何截断 UITableView Cell TextLabel 中的文本,使其不隐藏 DetailTextLabel?

    我有一份电话费率清单 textLabel是国家 地区并且detailTextLabel是我必须显示的速率 对于某些字符串 textLabel太长并且detailTextLabel变得隐藏 是否有一个设置可以自动调整文本 如果太长了 这是一个
  • 快速布尔运算

    这实在令人困惑 有人有什么想法吗 let viewHasMovedToRight false initially I want this to be false then func moveViewToRight sender UIButt
  • iOS - iPhone 8、8 Plus 和 iPhone X 的设备平台字符串/内部模型[重复]

    这个问题在这里已经有答案了 是什么设备平台字符串即将推出的 iPhone 8 iPhone 8 Plus 和 iPhone X 列表 根据内部型号识别设备的列表如下 对于斯威夫特 func devicePlatform gt String
  • 检测用户何时清除通知中心的通知

    我的应用程序需要知道用户是否使用清除按钮从通知中心删除 清除应用程序通知 是否可以检测用户何时从通知中心删除通知或抓取通知中心上的一组通知 你 即App 无法与NotificationCenter交互 NotificationCenter与
  • Xcode“使用性能工具运行”被禁用?

    我正在尝试从我的 Xcode 项目中查找内存泄漏 我不知道发生了什么 我无法选择任何内容Run gt Run with performance tool 事物列表被禁用 请帮助我 我是初学者 问题是我已经删除了构建文件夹并尝试使用性能工具运
  • 具有自签名证书的 Alamofire / ServerTrustPolicy

    我想使用 Alamofire 通过带有自签名证书的 https 连接与我的服务器进行通信 我的环境在本地主机上运行 我尝试连接 但响应始终如下所示 Success false Response String nil 我用下面的代码完成了它
  • 使用 Python-AppKit-Objective C 转换为预组合 Unicode 字符串

    苹果公司的这份文件技术问答 QA1235 http developer apple com qa qa2001 qa1235 html描述了一种将 unicode 字符串从组合版本转换为分解版本的方法 由于我对包含某些字符 例如重音符号 的
  • 由于 Crittercism 的 .sh 文件而无法上传应用程序

    我们自过去 2 年以来一直在使用 Crittercism SDK 并且能够成功上传应用程序 自过去 2 天以来 由于 dsym upload sh 文件 我们无法使用 Crittercism 上传应用程序 任何人都遇到同样的问题 Critt
  • 子视图的子层与更高的子视图重叠

    我有一个问题 我正在创建一个UIView这是从方法返回的 这部分很好 但我注意到 当我将子层添加到其中一个子视图时 这些层与子层添加的层次结构中较高的子视图 textView 和 imageView 重叠到testViewCopy出现在这些
  • 永远不会在 ios 的 google API 中获取上传数据进度

    我在我的应用程序中使用 Google Drive API 从我的应用程序上传文件 到目前为止 我成功了 并找到了上传所有类型文件的良好结果 我跟着谷歌示例 https developers google com drive examples
  • 停止在 iOS Web 应用程序上滚动屏幕边缘?

    正在开发 iOS 网络应用程序 用户可以上下滚动页面内容 但是 有没有办法阻止屏幕被拖动得太远以致灰色背景变得可见 这可以通过在移动 Safari 中打开任何网页并将页面下拉来复制 您可以使用诸如 Pastrykit 或 iScroll 之
  • 使用 iOS swift AVPlayer 在横向模式下不全屏

    我将视频视图设置为全屏 然而 在模拟器中玩时 它并没有全屏运行 此问题仅适用于 iPad 不适用于 iPhone 这是我的代码 override func viewDidAppear animated Bool super viewDidA
  • 领域数据库对象看起来是空的,但实际上不是

    我在用Realm https realm io对于一个小而简单的项目 我正在使用最新版本的框架 昨天从 Github 编译 和当前 AppStore 版本的 Xcode with Swift 2 1 我正在通过 segue 将 Realm
  • iOS AVCaptureVideoDataOutput 消耗太多内存

    我在用AVFoundation使用iPhone相机捕获视频的框架 我的代码 self session AVCaptureSession alloc init self output AVCaptureVideoDataOutput allo
  • 如何为移动应用程序创建无密码登录

    我有兴趣在移动应用程序和 API 之间构建某种无密码登录 假设我可以控制两者 动机是必须登录对用户来说非常烦人并且存在安全风险 例如 用户将重复使用现有密码 我希望用户能够立即开始使用该应用程序 我想知道是否有一些可行的技术 例如 在移动设
  • Swift Firebase - 如何在使用 queryOrdered(byChild: ).queryEqual(toValue: ) 时获取所有 k/v

    root reviews postABC postId reviewXYZ I want everything under this reviewUID buyerUID 01010 text fast shipping responseT
  • 小视频播放

    根据我从互联网收集的信息 MPMoviePlayerController 类不支持小视频播放 因此 为了死马当活马医 我想知道可以使用什么样的方法来让小视频在屏幕的一角播放 而不中断屏幕的其余部分 到目前为止 我们已经遇到了两种可行的解决方
  • ios Facebook 添加 FBNativeAdView 作为子视图

    我想使用预建视图FBNativeAdView 不想自定义 FBNative 广告 如link https developers facebook com docs reference ios current class FBNativeAd
  • 从基元创建自定义形状

    我正在尝试通过组合原始形状来创建自定义物理形状 目标是创建一个圆形立方体 合适的方法似乎是初始化 形状 变换 我在这里找到的https developer apple com library prerelease ios documenta

随机推荐

  • JPA 和 Hibernate 中 @MapKey、@MapKeyColumn 和 @MapKeyJoinColumn 之间的区别

    As per 休眠文档 http docs jboss org hibernate orm 4 3 manual en US html ch07 html 如果我们想使用 Map 作为实体之间的关联 有多个可用的注释 医生说 或者 映射键被
  • Simplecov 报告忽略 /app 目录中的文件夹

    我使用 simplecov 来测量 Rails 4 0 11 应用程序的覆盖范围 我使用 Ruby 2 0 0 我注意到 app 的一些子文件夹被 simplecov 忽略 我不明白为什么 test helper rb require si
  • X11原子XA_WM_NAME和“_NET_WM_NAME”有什么区别吗?

    与定义的原子有什么区别吗XA WM NAME定义于Xatom h那个人开始使用XInternAtom display NET WM NAME False 编辑 我制作了一个小程序来打印两者的整数值 我得到 NET WM NAME 312 X
  • 使用 LINQ 查询 DataColumnCollection

    我正在尝试对 DataTable 的 Columns 属性执行简单的 LINQ 查询 from c in myDataTable Columns AsQueryable select c ColumnName 然而 我得到的是这样的 找不到
  • 如何生成圆形分布中的随机点

    我想知道如何生成出现在圆形分布中的随机数 我能够在矩形分布中生成随机点 以便这些点在 0 我将如何继续生成圆内的点 以便 x 500 2 y 500 2 import random import math radius of the cir
  • java中将图像向右旋转90度

    我无法将图像向右旋转 90 度 我需要能够在java中单独旋转图像 唯一的事情 不幸的是 我需要在特定点绘制图像 并且没有带有参数的方法 1 单独旋转图像 2 允许我设置 x 和 y 任何帮助表示赞赏 public class Tumble
  • 防止 JavaScript 文件缓存

    我试图阻止浏览器缓存 2 个 JavaScript 文件 我尝试过使用没有成功 这是我的元素代码
  • 最小操作码大小 x86-64 strlen 实现

    我正在研究最小操作码大小x86 64 strlen我的代码高尔夫 二进制可执行文件的实现不应超过一定的大小 为简单起见 请考虑 demoscene 总体思路来自于here http www int80h org strlen 尺寸优化思路来
  • 显式模板专业化

    我不想问这样一个笼统的问题 但下面的代码是显式模板专业化的练习 我不断收到错误 c users documents visual studio 2010 projects template array template array arra
  • 在 C 程序中使用 tcl 和 tk 存根

    我需要一个简单的 C 程序来创建 tcl 解释器 初始化 tcl 和 tk 然后加载给定的 tcl tk 脚本 我想使用 tcl 和 tk 存根 以确保程序将在具有不同版本的 tcl tk 的计算机上运行 我将使用这个程序而不是运行wish
  • 以编程方式清除 iPhone 上的二级缓存

    我创建了一个应用程序 我将从服务器下载图像并将其本地存储在 iPhone 的文件系统上 事情发生得很好 现在的问题是 当我退出应用程序时 我想清除 iPhone 上本地缓存的图像 如何删除 iPhone 上的缓存图像 它使用 iPhone
  • 处理不再存在的枚举值的反序列化

    我有一个枚举 JJJ 它有 3 个值 A B 和 C 在我的程序的早期版本中 它还有一个附加值 D 我希望能够读取由早期版本的程序创建的序列化对象 程序中 但在序列化对象中遇到值为 D 的 JJJ 类型变量时会抛出异常 最理想的情况是 我希
  • 将 JVM 字节码往返于文本表示的故障安全方法

    我正在寻找一种在 JVM 类文件和文本表示之间往返的故障安全方法 一项严格的要求是 只要文本表示形式保持不变 生成的往返 JVM 类文件在功能上与原始 JVM 类文件完全相同 此外 文本表示必须是人类可读和可编辑的 应该可以对文本表示进行小
  • ServiceStack OAuth - 注册而不是登录

    在 servicestack OAuth 实现中 我只看到了自动登录的可能性 例如 脸书账号 但是否能够支持通过 Facebook 登录进行注册过程 我想要的是让用户登录到 facebook 应用程序 然后加载他们的姓名 姓氏和电子邮件 并
  • 如何从命令行创建 Android 项目

    我正在尝试从命令行创建一个 Android 项目 我在以下链接上尝试了它是什么 如何从命令行使用gradle创建android项目 https stackoverflow com questions 20801042 how to crea
  • Laravel 扩展包类

    我在 Laravel 安装中添加了一个购物车包 但我需要向该类添加一个方法 如果我直接修改类 当我更新到新版本时 我的更改会被覆盖吗 如果是这样 在不破坏未来更新的情况下修改软件包的最佳方法是什么 谢谢您的帮助 JB 我不知道是否有任何从供
  • J2EE 中的应用程序管理事务

    有没有人有一个从 J2EE 6 容器内的 CDI 托管 bean 内开始 提交 回滚事务的最佳方法的示例 我遇到了一种特殊情况 其中带注释的方法对我不起作用 我从同一类中的另一个方法调用该方法 并且我需要手动设置事务边界 我想知道我可以在代
  • 错误消息“未终止的字符串文字”

    我使用 jQuery 输出 PHP 从数据库创建的 JSON 字符串的结果 唯一的问题是一些数据位于多行上 我该如何解决这个问题 导致 JavaScript 中出现未终止的字符串文字错误 以下代码将删除所有 r 和 n 字符 preg re
  • 为什么 Haskell [] (list) 不是类型类?

    我正在编写一个 Haskell 函数 它接受一个列表作为输入 也就是说 它没有理由不能是队列或出列 或者任何允许我访问它的 头 和 尾 并检查它是否为空 的东西 所以 a 输入类型似乎太具体了 但据我所知 没有标准库类型类可以准确捕获此接口
  • 返回打开、关闭或从一天中的时间开始关闭的功能

    我有很多小时的操作时间 我想确定商店是否在 30 29 28 27 分钟内打开 关闭或即将关闭 我在 Xcode Objectic C 中执行此操作 现在我必须在 50 个不同的操作小时内执行此操作 我已经制作了一个函数来执行此操作 但它不