我刚刚通过ios 6将facebook集成到我的应用程序中,但是在我的墙上发布时遇到了问题.它只是说"通过ios app发布".我希望它说"通过应用名称发布".我已经与Facebook建立了应用程序标识,我有他们分配的应用程序编号,但我不确定如何将其与facebook集成集成.
以下是我的代码.如果有人可以提供帮助,我们将不胜感激.谢谢!
{
NSString *message;
message= [[NSString alloc] initWithFormat:@"I've earned %@ points", [self retrieveScore]];
if([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) {
SLComposeViewController *controller = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];
[controller setInitialText:message];
[controller addURL:[NSURL URLWithString:@"http://mysite"]];
[self presentViewController:controller animated:YES completion:Nil];
[message release];
SLComposeViewControllerCompletionHandler myBlock = ^(SLComposeViewControllerResult result){
NSString *output= nil;
switch (result) {
case SLComposeViewControllerResultCancelled:
output= @"Action Cancelled";
NSLog (@"cancelled");
break;
case SLComposeViewControllerResultDone:
output= @"Post Succesfull";
NSLog (@"success");
break;
default:
break;
}
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Facebook" message:output delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil];
[alert …Run Code Online (Sandbox Code Playgroud) 调用CommandManager.InvalidateRequerySuggested()比我想要的更长时间才能生效(在UI控件被禁用之前1-2秒延迟).
我有一个系统,我将任务提交给基于后台线程的任务处理器.此提交发生在WPF UI线程上.
当这个提交发生时,管理我的后台线程的对象做了两件事:
它引发了一个"忙"事件(仍然在UI线程上),几个视图模型响应; 当他们收到这个事件时,他们IsEnabled会给自己设置一面旗帜false.我的视图中的控件(数据绑定到此属性)会立即显示为灰色,这正是我所期望的.
它通知我的WPF ICommand对象不应该允许它们执行(同样,仍然在UI线程上).因为没有像对象那样INotifyPropertyChanged的ICommand东西,我被迫调用CommandManager.InvalidateRequerySuggested()强制WPF重新考虑我的所有命令对象的CanExecute状态(是的,我实际上需要这样做:否则,这些控件都不会被禁用).但是,与第1项不同,我的按钮/菜单项/等使用ICommand对象在视觉上更改为禁用状态所需的时间要长得多,而对于IsEnabled手动设置其属性的UI控件则需要更长的时间.
问题是,从用户体验的角度来看,这看起来很糟糕 ; 我的一半控件立即显示为灰色(因为它们的IsEnabled属性设置为false),然后整整1-2秒后,我的控件的另一半跟随(因为他们的CanExecute方法最终被重新评估).
所以,我的问题的第一部分:
听起来很愚蠢,有没有办法让CommandManager.InvalidateRequerySuggested()我的工作更快?我怀疑没有.
很公平,我的问题的第2部分:
我如何解决这个问题?我希望我的所有控件都可以同时禁用.它只是看起来不专业而且很尴尬.有任何想法吗?:-)
问题:
如果我DataGrid不完全可见(显示水平和垂直滚动条)并且我单击其中一个部分可见的单元格,则网格会自动滚动以将该单元格显示在视图中.我不希望这种情况发生.我试过玩RequestBringIntoView,像这样:
private void DataGrid_RequestBringIntoView(object sender, RequestBringIntoViewEventArgs e)
{
e.Handled = true;
}
Run Code Online (Sandbox Code Playgroud)
但这没有任何作用.
我试过的事情:
UserControls; 我试图把一个事件处理程序RequestBringIntoView上的所有UserControls使我的细胞,并试图处理事件,想,也许我是不是只是处理做得不够RequestBringIntoView的DataGrid本身.这没用.DataGrid一个内部的ScrollViewer,而办理ScrollViewer的RequestBringIntoView事件.这实际上是有效的,并且停止了自动滚动行为,但在我的情况下托管一个DataGrid内部ScrollViewer是完全不可取的,所以我需要提出一个不同的解决方案.我不知道如何阻止这种行为,任何想法?
我一直在搜索关于应用程序状态和Grand Central Dispatch的Apple文档,但我没有找到这个问题的好答案.
根据Apple的文档,在iOS 4.0上:
应用程序在后台但不执行代码.系统会在适当的时间自动将应用程序移动到此状态.暂停时,应用程序基本上在其当前状态下冻干,并且不执行任何代码.在内存不足的情况下,系统可能会清除已暂停的应用程序,恕不另行通知,以便为前台应用程序腾出更多空
因此,假设系统没有清除挂起的应用程序(挂起 - >未运行转换),当前在调度队列中执行的任务会发生什么?短语"基本上冻干"还有很多不足之处 - 究竟什么是冷冻干燥的?
我的解释是当应用程序转换回活动状态时,应用程序在暂停时使用的GCD队列需要恢复; 根据这种解释,暂停前GCD队列中存在的任务将消失.我的解释是否正确?
我正在尝试向我编写的简单WCF服务发送POST请求,但我一直收到400错误请求.我正在尝试将JSON数据发送到服务.谁能发现我做错了什么?:-)
这是我的服务界面:
public interface Itestservice
{
[OperationContract]
[WebInvoke(
Method = "POST",
UriTemplate = "/create",
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json)]
String Create(TestData testData);
}
Run Code Online (Sandbox Code Playgroud)
实施:
public class testservice: Itestservice
{
public String Create(TestData testData)
{
return "Hello, your test data is " + testData.SomeData;
}
}
Run Code Online (Sandbox Code Playgroud)
DataContract:
[DataContract]
public class TestData
{
[DataMember]
public String SomeData { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
最后我的客户端代码:
private static void TestCreatePost()
{
Console.WriteLine("testservice.svc/create POST:");
Console.WriteLine("-----------------------");
Uri address = new Uri("http://localhost:" + PORT + "/testweb/testservice.svc/create");
// …Run Code Online (Sandbox Code Playgroud) 我有点困惑这是如何工作的 - 这是我的理解:
但是......捆绑ID也位于Info.plist中.看来如果你在Info.plist中更改了包ID ,Xcode会自动在Target info\Properties\Identifier中更改它,反之亦然.
那么哪个优先呢?该目标信息\属性\标识捆绑ID或Info.plist的捆绑ID?
我问的原因是因为我想为我的应用程序提供两个版本 - 免费广告支持版本和付费版本,我想用两个不同的目标实现这一目标.由于他们将是App Store中的两个不同的应用程序,我的理解是他们需要两个不同的应用程序ID(我不想沿着带有应用程序ID的*路线,在App Store上如何工作的描述使我的脑部受伤).
如果我这样做,我是否需要为每个目标使用两个不同的Info.plists,或者我可以使用相同的Info.plist,只是让不同的目标使用不同的开发/分发配置文件?
我在使用ASP.NET 3.5上运行log4net时遇到了一些麻烦.这是我第一次尝试使用log4net,我觉得我错过了一块拼图.
我的项目引用了log4net程序集,据我所知,它正在我的服务器上成功部署.
我的web.config包含以下内容:
<configSections>
<section name="log4net"
type="log4net.Config.Log4NetConfigurationSectionHandler
, log4net"
requirePermission="false"/>
</configSections>
<log4net>
<appender name="InfoAppender" type="log4net.Appender.FileAppender">
<file value="..\..\logs\\InfoLog.html" />
<appendToFile value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern
value="%d [%t] %-5p %c [%x] - %m%n" />
</layout>
</appender>
<logger name="_Default">
<level value="INFO" />
<appender-ref ref="InfoAppender" />
</logger>
</log4net>
Run Code Online (Sandbox Code Playgroud)
我正在使用以下代码来测试记录器:
using log4net;
using log4net.Config;
public partial class _Default : System.Web.UI.Page
{
private static readonly ILog log = LogManager.GetLogger("_Default");
protected void Page_Load(object sender, EventArgs e)
{
log.Info("Hello logging world!");
}
}
Run Code Online (Sandbox Code Playgroud)
在我的Global.asax中,我正在做以下事情:
void Application_Start(object sender, …Run Code Online (Sandbox Code Playgroud) 在我不断寻求尝试围绕RESTful-ness进行思考的过程中,我来到了另一个我不确定如何继续的地方.我为自己设定了一个思想表达,我为一个资源设计了一个简单的投票系统,就像SO如何允许对问题进行投票一样.所以,说我的资源是图像,我可以通过ID获取图像,如下所示:
http://www.mysite.com/images/123123
Run Code Online (Sandbox Code Playgroud)
在这个例子中,返回的是一个图像的JSON表示,如下所示:
{
"URL":"http://www.mysite.com/images/123123.jpg",
"Rep":"100"
}
Run Code Online (Sandbox Code Playgroud)
我如何设计一种对该图像进行"投票"的方式?我想要两个操作; 投票和投票.客户不应该知道每个人承受多少重量,因为我希望在服务器级别决定投票/投票的奖励,以便我可以随时更改它.
我的第一个想法是拥有这样的东西:
http://www.mysite.com/vote/images?image=123123
Run Code Online (Sandbox Code Playgroud)
对于该URL,可以发布如下内容:
{
"Vote":"UpVote"
}
Run Code Online (Sandbox Code Playgroud)
但我对此保持警惕 - 对我说伪装的RPC.设计这个会是一种糟糕的方式吗?如果是这样,我可以尝试其他什么设计?
为什么在java中(我不知道任何其他编程语言)标识符不能以数字开头,为什么以下声明也不允许?
int :b;
int -d;
int e#;
int .f;
int 7g;
Run Code Online (Sandbox Code Playgroud) 这非常令人困惑.每当我尝试在SQL Server Management Studio Express(SQL Server 2008)中的数据库节点下添加(或甚至查看)Database Diagrams节点时,我都会收到此错误:
无法安装数据库关系图支持对象,因为此数据库没有有效的所有者.要继续,首先使用"数据库属性"对话框的"文件"页面或ALTER AUTHORIZATION语句将数据库所有者设置为有效登录,然后添加数据库关系图支持对象.
好的.问题是,根据Management Studio,我的登录名是数据库的所有者.当我登录Management Studio时,我正在使用Windows身份验证,如果我转到"数据库属性"对话框的"文件"页面,我的登录名是所有者.
接下来我想,好吧,也许我不是正确服务器角色的成员实际上是所有者,但是,我的登录是sysadmin服务器角色的成员,根据此MDSN页面是拥有的必备条件一个数据库.
所以最后我做了一些谷歌搜索,我看到人们告诉我尝试执行这样的声明:
EXEC sp_dbcmptlevel 'yourDB', '90';
go
ALTER AUTHORIZATION ON DATABASE::yourDB TO "yourLogin"
go
use [yourDB]
go
EXECUTE AS USER = N'dbo' REVERT
go
Run Code Online (Sandbox Code Playgroud)
我的问题在于我并不真正理解这段代码在做什么,并且使用上述语句(看起来成功执行)尝试不同的用户名或数据库名称似乎无法解决我的问题.
谁能想到我可能会遗失的任何事情?