小编Ada*_*ite的帖子

可达性无法按预期工作

从Apple下载Reachability,使用此方法检查活动连接:

-(BOOL)isReachable{

    Reachability *r = [Reachability reachabilityWithHostName:@"http://www.google.com"];

    if(NotReachable == [r currentReachabilityStatus]) {
        NSLog(@"Not Reachable");
        return NO;
    }

    NSLog(@"Reachable");
    return YES;  

}
Run Code Online (Sandbox Code Playgroud)

尽管连接了,但每次都返回NO?无法弄清楚为什么......

有任何想法吗?谢谢.

在旁注,任何人都可以推荐一个很好的清洁Reachability单件类?

objective-c reachability ios

16
推荐指数
2
解决办法
8955
查看次数

使iPhone屏幕变暗

我已设法确保iPhone不会自动锁定使用:

    [[ UIApplication sharedApplication ] setIdleTimerDisabled: YES ];
Run Code Online (Sandbox Code Playgroud)

但是如何在一定时间后使屏幕变暗?

谢谢...

编辑:

我想我自己找到了一个解决方案:

在视图控制器中使用此方法可以通过添加50%alpha的黑色视图来调暗.确保设置userInteractionEnabled = NO以将事件传递给基础视图.

- (IBAction)dim:(id)sender {
UIView *dimView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)];
dimView.backgroundColor = [UIColor blackColor];
dimView.alpha = 0.5f;
dimView.userInteractionEnabled = NO;
[self.view addSubview:dimView];
}
Run Code Online (Sandbox Code Playgroud)

或者,可能会冒风险(但Apple可能会在提交时拒绝):

[(id)[UIApplication sharedApplication] setBacklightLevel:1.0f];
Run Code Online (Sandbox Code Playgroud)

这是一个私有API,不应该使用...

iphone ios auto-lock

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

在日历月的第一个星期一

我被困在Calendar/TimeZone/DateComponents/Date地狱中,我的思绪在旋转.

我正在创建一个日记应用程序,我希望它在全球范围内工作(使用iso8601日历).

我试图在iOS上创建类似于macOS日历的日历视图,以便我的用户可以浏览他们的日记条目(注意每个月的7x6网格):

/ Users/adamwaite/Desktop/Screenshot 2018-10-04 at 08.22.24.png

要获得本月的第一天,我可以执行以下操作:

func firstOfMonth(month: Int, year: Int) -> Date {

  let calendar = Calendar(identifier: .iso8601)

  var firstOfMonthComponents = DateComponents()
  // firstOfMonthComponents.timeZone = TimeZone(identifier: "UTC") // <- fixes daylight savings time
  firstOfMonthComponents.calendar = calendar
  firstOfMonthComponents.year = year
  firstOfMonthComponents.month = month
  firstOfMonthComponents.day = 01

  return firstOfMonthComponents.date!

}

(1...12).forEach {

  print(firstOfMonth(month: $0, year: 2018))

  /*

   Gives:

   2018-01-01 00:00:00 +0000
   2018-02-01 00:00:00 +0000
   2018-03-01 00:00:00 +0000
   2018-03-31 23:00:00 +0000
   2018-04-30 23:00:00 +0000
   2018-05-31 23:00:00 +0000
   2018-06-30 23:00:00 +0000
   2018-07-31 23:00:00 +0000
   2018-08-31 …
Run Code Online (Sandbox Code Playgroud)

timezone calendar date ios swift

10
推荐指数
1
解决办法
1134
查看次数

内部div在高度为auto的容器内高度为100%

我正在努力让div完全扩展到它的容器高度.

标记:

<div class="container">
  <div class="innerOne inner"></div>
  <div class="innerTwo inner"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

在不同的视口中.innerTwo,内容比我们的内容高,.innerOne但我希望它的背景与.innerTwos的大小相同

样式:

.container {
   width: 100%;
   height: auto;
   background-color: yellow;   

   /* clearfix */
   *zoom: 1;
   &:before,
   &:after {
     display: table;
     content: "";
     line-height: 0;
   }
   &:after {
    clear: both;
   }
}

.inner {
   float: left;
   width: 50%;
   height: 100%;
   background-color: red;
}
Run Code Online (Sandbox Code Playgroud)

但高度不会匹配.我知道可以通过给容器设置一个高度来完成它,但我不想这样做,因为它是一个响应式站点.这可能吗?我宁愿不使用JS.

css height positioning css-float

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

如何将符合具有关联类型的协议的不同类型添加到集合中?

作为学习练习,我在Swift中重写我的验证库.

我有一个ValidationRule协议,定义了各个规则应该是什么样子:

protocol ValidationRule {
    typealias InputType
    func validateInput(input: InputType) -> Bool
    //...
}
Run Code Online (Sandbox Code Playgroud)

关联类型InputType定义要验证的输入类型(例如String).它可以是显式的或通用的.

这有两条规则:

struct ValidationRuleLength: ValidationRule {
    typealias InputType = String
    //...
}

struct ValidationRuleCondition<T>: ValidationRule {   
    typealias InputType = T
    // ...
}
Run Code Online (Sandbox Code Playgroud)

在其他地方,我有一个函数来验证带有ValidationRules 集合的输入:

static func validate<R: ValidationRule>(input i: R.InputType, rules rs: [R]) -> ValidationResult {
    let errors = rs.filter { !$0.validateInput(i) }.map { $0.failureMessage }
    return errors.isEmpty ? .Valid : .Invalid(errors)
}
Run Code Online (Sandbox Code Playgroud)

我认为这会起作用,但编译器不同意.

在下面的例子中,即使输入是一个字符串,rule1的 …

generics protocols ios type-alias swift

7
推荐指数
1
解决办法
1214
查看次数

如何持久化MPMediaItemCollection对象?(从iPod中选择)

我正在创建一个应用程序,用户可以在设置选项卡中选择一首歌曲,并根据需要在不同的视图中播放.我想要它,以便如果用户要关闭应用程序并再次打开它,则可以存储此项目.

我设法允许用户选择并存储一首歌曲:

-(IBAction)showMediaPicker:(id)sender{

    MPMediaPickerController *mediaPicker = [[MPMediaPickerController alloc] initWithMediaTypes: MPMediaTypeAny];

    mediaPicker.delegate = self;

    mediaPicker.allowsPickingMultipleItems = NO;

    mediaPicker.prompt = @"Select Alarm Sound";

    [self presentModalViewController:mediaPicker animated:YES];

}


- (void) mediaPicker: (MPMediaPickerController *) mediaPicker didPickMediaItems: (MPMediaItemCollection *) mediaItemCollection {

    [self dismissModalViewControllerAnimated: YES];

    settingsData.selectedSong = mediaItemCollection;//Object of type MPMediaItemCollection
Run Code Online (Sandbox Code Playgroud)

但我希望用户每次使用该应用程序时都必须这样做.

我尝试过使用NSUserDefaults:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:settingsData.selectedSong forKey:@"alarmSoundKey"];
[defaults synchronize];
Run Code Online (Sandbox Code Playgroud)

但得到错误:

* - [NSUserDefaults setObject:forKey:]:尝试插入类'MPMediaItemCollection'的非属性值''.请注意,属性列表中的字典和数组也必须仅包含属性值.

请问有什么选择?不太确定如何解决这个问题......

解决方案

我还不能回答我自己的问题所以我会把它放在这里:

我已经找到了我自己的解决方案:

首先将MPMediaItemCollection转换/编码为NSData对象,然后使用NSUserDefaults将其存储起来:

NSData *data = [NSKeyedArchiver archivedDataWithRootObject:mediaItemCollection];

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:data forKey:@"someKey"]; …
Run Code Online (Sandbox Code Playgroud)

iphone ipod nsuserdefaults mpmediaitemcollection ios

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

GKTurnBasedParticipant信息

有没有办法从GKTurnBasedParticipant对象中检索玩家的名字?根据班级参考,除了丑陋的玩家ID之外,似乎无法显示有关游戏玩家的相关信息.或者我错过了什么?

谢谢...

iphone objective-c gamekit ios game-center

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

使用jQuery实现Javascript高效的搜索数组

我的JavaScript知识存在差距.我想搜索特定值的对象值数组并返回它.

在我编写JavaScript的那一年里,我一直在实现它:

var itemClicked = (function(){

  var retval;

  //Note self.inventory.itemsArray is an array of JS objects

  $(self.inventory.itemsArray).each(function(i){
    if(parseInt(this.id) === parseInt(idOfItem)){
      retval = this;
      return false;
    }
  });

  return retval;

})();
Run Code Online (Sandbox Code Playgroud)

它有效,但我确信任何东西都有更优雅的方式.请告诉我!

编辑 - 解决方案

感谢@gdoron,他的回答如下.

var myVar = $(self.owner.itemsArray).filter(function(){
   return parseInt(this.id) == parseInt(recItemID);
}).get(0);
Run Code Online (Sandbox Code Playgroud)

注意:.get(0)最后添加了因为myVar被包装为jQuery对象.

javascript arrays search jquery object

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

图标没有出现在Xcode存档中?

我的应用程序图标未出现在Xcode存档中.我将它们设置在plist中,它们显示在模拟器上,设备上和项目设置中.见下图:

在此输入图像描述

我怎样才能解决这个问题?我顺便使用4.3.1.

谢谢...

iphone xcode icons ipad ios

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

注销后的CodeIgniter后退按钮

当用户退出我的CodeIgniter(PHP)应用程序时,我正在尝试停止/禁用浏览器的后退按钮功能.但是,我认为浏览器正在缓存页面,因此尽管会话从注销中被销毁,它仍然可见.

我知道会话已经死了,因为当用户尝试做任何事情(点击任何链接等)时,他们会通过控制器中的方法被踢出.

由于上一页包含机密信息,因此后退按钮以这种方式工作并不理想.

不知道如何解决这个问题,也许是介于两者之间的重定向页面(但是用户可以快速地关闭后退按钮吗?),帮助!

谢谢.

html php session caching codeigniter

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