我有一个应用程序,目前NSURLConnection用于其绝大多数网络.我想搬到,NSURLSession因为Apple告诉我这是要走的路.
我的应用只是NSURLConnection通过+ (NSData *)sendSynchronousRequest:(NSURLRequest *)request returningResponse:(NSURLResponse **)response error:(NSError **)error类方法使用同步版本.我在NSBlockOperation运行中执行此操作,NSOperationQueue因此我不会不必要地阻止主队列.以这种方式做事的最大好处是我可以使操作彼此依赖.例如,我可以让请求数据的任务依赖于登录任务完成.
我没有看到任何对同步操作的支持NSURLSession.所有我能找到的文章都是嘲笑我甚至想要同步使用它而且我是一个阻止线程的可怕人物.精细.但我认为没有办法让NSURLSessionTask彼此依赖.有没有办法做到这一点?
或者有描述我将如何以不同的方式做这样的事情?
我正在和一个人合作UITableViewController.我有一个项目表,如果用户进行更多编辑,用户可以删除这些项目.当他进入编辑模式时,我想显示一个标题,提供删除所有项目的选项.同时,它应该显示一个标签,提供有关使用空间的信息.如果设备进入横向模式,我希望自动调整大小.据我所知,我需要使用autolayout来做到这一点.
我本来喜欢UIView在Storyboard中设计标题,但Storyboard只允许视图控制器,而不是视图.我知道我可以拥有一个XIB文件,但如果可以,我宁愿避免这样做.
首先,我重写了editing属性,以便在编辑模式下可以重绘表格部分.
- (void)setEditing:(BOOL)editing animated:(BOOL)animated
{
[super setEditing:editing animated:animated];
NSIndexSet *set = [NSIndexSet indexSetWithIndex:0];
[self.tableView reloadSections:set withRowAnimation:UITableViewRowAnimationAutomatic];
}
Run Code Online (Sandbox Code Playgroud)
我在适当时使用此代码插入节标题:
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
if (self.isEditing)
return [self headerView];
else
return nil;
}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
if (self.isEditing)
return [self headerView].frame.size.height;
else
return 0;
}
Run Code Online (Sandbox Code Playgroud)
魔法发生在- headerView方法中.UIView *如果需要,它返回a ,从缓存中获取它.它添加了按钮和标签,然后放入约束.我在故事板中使用了这些相同的约束,我没有遇到任何问题.
- (UIView *)headerView
{
if (headerView)
return headerView;
float w = [[UIScreen mainScreen] bounds].size.width;
UIButton *deleteAllButton = …Run Code Online (Sandbox Code Playgroud) 我目前正在使用velocity.js 来控制我正在创建的SVG 绘图上的一些动画。它是与用户交互的,因此当在某些部分发生单击时,图片可能会向右或向下增长。到目前为止,一切都运行良好,直到图片对于 SVG 框来说太大。
在这些情况下,我只需调整 viewBox 的大小即可缩放图像。
svgDoc.setAttribute("viewBox", "0 0 " + svgDocWidth + " " + svgDocHeight);
Run Code Online (Sandbox Code Playgroud)
这可行,但看起来不太好,因为它不是动画的。它只是跳到新的尺寸。有没有办法用velocity.js 来改变viewBox 的动画效果?
我尝试过这种方法:
$viewBox = $(svgDoc.viewBox);
$viewBox.velocity({height: svgDocHeight, width: svgDocWidth});
Run Code Online (Sandbox Code Playgroud)
但这没有任何作用。
这超出了velocity.js可以支持的范围吗?
解决方案于2015-11-21
@Ian 给出了我最终使用的解决方案。它最终看起来像这样:
var origHeight = this.svgDoc.viewBox.animVal.height;
var origWidth = this.svgDoc.viewBox.animVal.width;
var docHeight = this.SvgHeight();
var docWidth = this.SvgWidth();
if ((origHeight != docHeight) || (origWidth != docWidth))
{
var deltaHeight = docHeight - origHeight;
var deltaWidth = docWidth - origWidth;
$(this.svgDoc).velocity(
{
tween: 1
},
{
progress: function(elements, …Run Code Online (Sandbox Code Playgroud) 我有一个Xamarin Android项目.我正在尝试使用自定义Action Provider.我在这里隐约关注Android java示例:https://gist.github.com/f2prateek/3982054但将其移植到C#.这就是问题所在.
我使用以下代码创建了SearchActionProvider类:
namespace Erik.Mobile.Screens
{
public class SearchActionProvider : ActionProvider
{
...
}
}
Run Code Online (Sandbox Code Playgroud)
我创建的菜单资源:
<?xml version="1.0" encoding="utf-8" ?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/actionSearch"
android:icon="@drawable/searchIcon"
android:title="@string/actionSearch"
android:showAsAction="ifRoom"
android:actionProviderClass="Erik.Mobile.Screens.SearchActionProvider"
/>
</menu>
Run Code Online (Sandbox Code Playgroud)
我的包名是com.company.Erik.
在我的Activity中,我重写OnCreateOptionsMenu()了MenuInflater.Inflate()在资源上使用.我认为它正在工作,因为它的图标ActionProvider显示在活动栏中.点击它什么都不做.
在Xamarin工作室,当我开始时,我收到以下错误,为简洁起见编辑:
[MenuInflater] Cannot instantiate class: Erik.Mobile.Screens.SearchActionProvider
[MenuInflater] java.lang.ClassNotFoundException: Didn't find class "Erik.Mobile.Screens.SearchActionProvider" on path: /data/app/com.company.Erik-1.apk
[MenuInflater] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:65)
[MenuInflater] at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
[MenuInflater] at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
[MenuInflater] at android.view.MenuInflater$MenuState.newInstance(MenuInflater.java:469)
[MenuInflater] at android.view.MenuInflater$MenuState.readItem(MenuInflater.java:374)
[MenuInflater] at android.view.MenuInflater.parseMenu(MenuInflater.java:160)
[MenuInflater] at …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用PrincipalContext通过Active Directory服务找出域组件。
我使用很少的参数创建了PrincipalContext:
PrincipalContext theContext = new PrincipalContext(ContextType.Domain);
Run Code Online (Sandbox Code Playgroud)
theContext正确返回。我可以查询很多东西并获得预期的结果。但是我真正想做的是:
Console.WriteLine("Domain Component: " + theContext.Container);
Run Code Online (Sandbox Code Playgroud)
根据MSDN,这仅“获取在构造函数中的容器参数中指定的值”。既然我什么都没传递,我什么也得不到。
但是理论上的容器具有域组件,您可能需要使用或创建的任何专有名称都需要这些域组件。我特别希望在一个已知的组织单位中创建一个新用户。但是,由于我不知道域组件,因此无法创建专有名称。我还没有看到对相对路径的任何支持。
我认为最好的选择是搜索任何用户,然后获取其专有名称并删去“ dc”部分。
var searchUser = new UserPrincipal(theContext);
var searcher = new PrincipalSearcher(searchUser);
Principal aUser = searcher.FindOne();
if (aUser != null)
{
string dn = aUser.DistinguishedName;
Console.WriteLine(dn.Substring(dn.IndexOf("dc=", StringComparison.InvariantCultureIgnoreCase)));
}
Run Code Online (Sandbox Code Playgroud)
感觉像是一个糟糕的骇客。太多可能会出错。我希望有更好的东西。有人有主意吗?
我有一张桌子,叫它 TEST,就像这样:
+----+--------+
| id | PRCNTG |
+----+--------+
| 1 | 10 |
| 2 | 20 |
| 2 | 30 |
| 3 | 40 |
| 4 | 50 |
| 5 | 20 |
| 5 | 10 |
| 6 | 20 |
+----+--------+
Run Code Online (Sandbox Code Playgroud)
PRCNTG在本例中,该列总计 200。它不会总是如此。
如果我执行此查询:
SELECT ID, SUM(PRCNTG) FROM TEST GROUP BY ID;
Run Code Online (Sandbox Code Playgroud)
我希望得到以下结果:
+----+--------+
| id | PRCNTG |
+----+--------+
| 1 | 10 |
| 2 | 50 | …Run Code Online (Sandbox Code Playgroud) 是否有任何提示和技巧来解开unwind segues?
我遇到了麻烦,没有发生,或者" 无法识别的选择器发送到实例0x ?????? "错误.我也收到了警告" 警告:正在进行演示或解雇时尝试从视图控制器中解除警告!"
ios ×3
objective-c ×3
c# ×2
aggregate ×1
android ×1
animation ×1
autolayout ×1
javascript ×1
nsurlsession ×1
segue ×1
sql ×1
svg ×1
t-sql ×1
uitableview ×1
velocity.js ×1
xamarin ×1