小编tes*_*ing的帖子

TestFlight:使用多个设备

目前我正在测试TestFlight.我创建了一些内部测试人员并开始了beta测试.内部测试人员收到邀请电子邮件以开始测试.以下是我的问题:

如果点击邀请电子邮件中的链接,哪个帐户可以测试应用?

如果转发电子邮件会怎样?只有来自内部测试人员的Apple ID才能测试应用程序吗?或者每个拥有该电子邮件的人?我有问题,电子邮件只能转发给我测试设备上的应用程序.目前,内部测试仪的Apple ID已分配给设备.另一个设备(可能有不同的Apple ID)现在已经使用了邀请.如果我想接受转发的邀请电子邮件中的链接,我会得到

邀请已被使用.再试一次.

即使我有正确的Apple ID,TestFlight应用程序也不会向我显示打开的邀请.你必须使用这封电子邮件.一般情况下,最多10台设备应该能够在iTunes帐户(内部测试仪)上测试应用程序.

如何将多个设备添加到一个帐户?

这有什么要求?相同的Apple ID?好.在所有设备之间启用同步(包括应用)?

iphone ipad ios testflight

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

便携式类库与库项目

我想知道PCL(可移植类库)和普通库之间的区别.

PCL使用配置文件来确定哪些平台和功能可用.两者都可以生成可以在不同平台上使用的DLL.对于普通的库项目,您还可以设置目标框架(例如.NET 3.5).Xamarin#if编译器指令仅适用于共享项目,这意味着它们不用于PCL.我认为PCL和图书馆项目非常相似.

那么在处理不同的移动平台时有什么不同?

c# dll xamarin.ios portable-class-library xamarin

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

检查NSNumber是否为空

如何检查NSNumber对象是否为空?

好的很容易:

NSNumber *myNumber;
if (myNumber == nil)
    doSomething
Run Code Online (Sandbox Code Playgroud)

但是如果对象已经创建,但由于分配失败而没有值,我该如何检查?用这样的东西?

if ([myNumber intValue]==0)
   doSomething
Run Code Online (Sandbox Code Playgroud)

是否有一种通用的方法来测试空虚上的对象,例如NSString可用(参见这篇文章))?

例1

NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
[dict setValue:@"" forKey:@"emptyValue"];
NSNumber *emptyNumber = [dict objectForKey:@"emptyValue"];
Run Code Online (Sandbox Code Playgroud)

哪个值emptyNumber包含?我该怎么检查emptyNumber为空?

例2

NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
[dict setValue:@"" forKey:@"emptyValue"];
NSString *myString = [dict objectForKey:@"emptyValue"];
if (myString == nil || [myString length] == 0)
    // got an empty value
    NSNumber *emptyNumber=nil;
Run Code Online (Sandbox Code Playgroud)

如果我之后使用它会发生什么 emptyNumber设置为nil?

[emptyNumber intValue]
Run Code Online (Sandbox Code Playgroud)

我得到零吗?

例3

NSMutableDictionary *dict = [[NSMutableDictionary alloc] …
Run Code Online (Sandbox Code Playgroud)

iphone cocoa-touch objective-c nsnumber

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

以递归方式设置所有文件和文件夹的权限

我想以递归方式设置文件夹和文件权限.文件夹应该得到750和文件644.我发现了这个并做了一些改编.这个有用吗?

<?php

function chmod_r($Path) {
   $dp = opendir($Path);
   while($File = readdir($dp)) {
      if($File != "." AND $File != "..") {
         if(is_dir($File)){
            chmod($File, 0750);
         }else{
             chmod($Path."/".$File, 0644);
             if(is_dir($Path."/".$File)) {
                chmod_r($Path."/".$File);
             }
         }
      }
   }
   closedir($dp);
}

?> 
Run Code Online (Sandbox Code Playgroud)

php permissions chmod

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

SpecialFolder.Personal位置

我将文件保存到Xamarin中的System.Environment.SpecialFolder.Personal,它似乎成功,因为我可以立即从文件中提取数据.但是,我无法在手机上浏览和查找此文件,这个难以捉摸的"个人"文件夹.

c# filesystems xamarin.android xamarin

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

hash()与crypt()函数比较

我目前正在实施登录系统.我想将密码和salt存储在数据库中.现在我发现有一个hash()和一个crypt()函数似乎做同样的事情(对SHA512有效).

hash()是更新的,似乎支持更多的哈希算法比crypt().还是我应该知道/关心的其他差异?

编辑:

function generatePasswordHash($password){
    $salt = base64_encode(mcrypt_create_iv(8));
    $calculatedPasswordHash = crypt($password, '$1$' . $salt . '$');

    return $calculatedPasswordHash;
}
Run Code Online (Sandbox Code Playgroud)

结果看起来像 $1$Qh6ByGJ9$zLn3yq62egvmc9D7SzA2u.

这是我的密码检查功能:

function checkLoginData($username, $password){
    global $db;

    $sql = "SELECT * FROM users WHERE username = :username";
    $result = $db->ExecuteQuery($sql, array("username"=>$username));

    if(!empty($result)){
        $result = $result[0];
        $savedPasswordHash = $result['password'];
        $splitted = explode("$", $savedPasswordHash);
        $salt = $splitted[2];
        $calculatedPasswordHash = crypt($password, '$1$' . $salt . '$');

        if($savedPasswordHash === $calculatedPasswordHash){
            return true;
        }
    }

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

php encryption hash crypt

13
推荐指数
1
解决办法
9836
查看次数

更新正在等待开发人员发布的应用

我有一个应用程序正在等待开发人员发布(Apple批准).该应用程序从未发布过.现在我想提交更新.因此我增加了CFBundleVersion,但他抱怨道.所以我也增加了CFBundleShortVersionString.

在iTunes Connect中,我可以在预发布中看到我的新提交.但在版本视图中,我看到了旧版本.那么我该如何批准更新?如果我能够自己管理发布的时间,那就太好了.因此,它一直等待开发人员发布.

我有什么选择?我应该拒绝二进制文件吗?我应该使用哪些版本/内部版本号?我可以重复使用旧的吗?

itunesconnect app-store ios

13
推荐指数
2
解决办法
6679
查看次数

在Xamarin.Forms中使用Thread.Sleep

我想执行以下操作

MainPage = new ContentPage
{
    Content = new StackLayout
    {
        Children =
        {
            new Button
            {
                Text = "Thread.Sleep",
                Command = new Command(() =>
                {
                    Thread.Sleep(1000);
                    MainPage.Animate("", x => MainPage.BackgroundColor = Color.FromRgb(x, x, x));
                }),
            },
            new Button
            {
                Text = "Task.Run + Thread.Sleep",
                Command = new Command(async () =>
                {
                    await Task.Run(() => Thread.Sleep(1000));
                    MainPage.Animate("", x => MainPage.BackgroundColor = Color.FromRgb(x, x, x));
                })
            },
            new Button
            {
                Text = "Device.StartTimer",
                Command = new Command(() => Device.StartTimer(
                    TimeSpan.FromSeconds(1),
                    () …
Run Code Online (Sandbox Code Playgroud)

c# sleep xamarin.ios xamarin xamarin.forms

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

Xamarin.Forms 2.5.0和Context

今天我更新到Xamarin.Forms 2.5.0并看到,我得到以下警告:

  • 来自Android子项目:

    警告CS0618'Forms.Context'已过时:'版本2.5后,上下文已过时.请改用当地语境.'

我怎样才能获得本地环境而不是Forms.ContextAndroid上下文意味着什么?

  • 从自定义渲染器:

    警告CS0618'ButtonRenderer.ButtonRenderer()'已废弃:'从2.5版开始,此构造函数已过时.请改用ButtonRenderer(Context).

在我,ButtonRenderer我只有OnElementChanged()方法,所以我应该在这里改变什么?只需添加一个ButtonRenderer(Context)构造函数?如果我在我的平台渲染器类中执行此操作,我仍然会收到警告.有人有例子吗?在官方文件没有提到它,谷歌也不会带来一些有用的结果,除了开源代码ButtonRenderer.此更改还涉及许多其他渲染器类.

有没有人经历过其他变化,制动插件等等?

PS:我也没有发现,什么时候Device.Windows被弃用了.现在我用它取而代之Device.UWP.

c# custom-renderer xamarin xamarin.forms

13
推荐指数
3
解决办法
6246
查看次数

无限滚动UICollectionView的两个方向与部分

我有一个类似于iOS日历的月视图,并且UICollectionView使用了一个.现在,实现无限滚动行为会很有趣,这样用户可以在每个方向上垂直滚动,它永远不会结束.现在的问题是如何以有效的方式实施这种行为?这是我现在发现的:

基本上,您可以检查是否到达当前滚动视图的末尾.您可以在里面scrollViewDidScroll:或里面查看collectionView:cellForItemAtIndexPath:.将另一个内容添加到数据源会很简单,但我认为还有更多内容.如果您只添加数据,则只能向下滚动.用户应该能够向两个方向滚动(向上,向下).不知道是否reloadData会这样做.也contentOffset将改变,不应该有跳跃行为.

另一种可能性是使用WWDC 2011的Advanced ScrollView Techniques中显示的方法.这里用于设置到中心,子视图的帧被调整到距离中心相同的距离.如果我没有部分,这种方法可以正常工作.如何使用部分?layoutSubviewscontentOffsetUIScrollView

我不想使用高值的部分来伪造无限滚动,因为用户会找到结束.我也不使用任何分页.

那么如何为集合视图实现无限滚动?

编辑:

现在我尝试增​​加部分的数量,如果我到达结束UICollectionView.要显示新部分,必须调用reloadData.在调用此方法时,所有当前可用部分的所有计算都将再次完成!滚动浏览集合视图时,此性能问题会导致严重的断断续续,如果向下滚动,则会变得越来越慢.不知道是否可以在后台线程上转移这项工作.通过这种方法,如果您进行了所需的调整,可以向上和向下滚动.

赏金:

现在,我正在为回答这个问题提供赏金.我对如何实现iOS日历的月视图感兴趣.详细介绍无限滚动的工作原理.它在两个方向上工作(向上,向下),它永远不会结束(真正的无限 - 不重复).也没有任何延迟(即使在iPhone 4上).我想使用UICollectionView和数据由不同的部分组成,每个部分有不同数量的项目.必须做一些计算才能得到下一部分.我不需要日历部分 - 只有部分中不同项目的无限滚动行为.随意提问.

添加部分:

public override void Scrolled(UIScrollView scrollView)
{
    NSIndexPath[] currentIndexPaths = currentVisibleIndexPaths();

    // if we are at the top
    if (currentIndexPaths.First().Section == 0)
    {
        NSIndexPath oldIndexPath = NSIndexPath.FromItemSection(0, 0);
        UICollectionViewLayoutAttributes attributes_before = this.controller.CollectionView.GetLayoutAttributesForItem(oldIndexPath);
        CGRect before = attributes_before.Frame;
        CGPoint contentOffset = this.controller.CollectionView.ContentOffset;
        this.controller.CollectionView.PerformBatchUpdatesAsync(delegate …
Run Code Online (Sandbox Code Playgroud)

calendar uiscrollview ios infinite-scroll uicollectionview

12
推荐指数
1
解决办法
5178
查看次数