小编Ben*_*ard的帖子

连续'if'陈述

为TYPO编辑 -

如果第一个是真的,我怎么能检查一件事而另一件事呢?

例如,假设我有一个购物篮对象,而且我只想在创建篮子并且它不是空的时候做某事.

我试过了:

if ((basket) && ([basket numberOfItems] >0))...
Run Code Online (Sandbox Code Playgroud)

但即使第一个条件失败也会评估第二个条件,从而导致崩溃(可能是因为我在一个不存在的对象上调用numberOfItems).

我可以嵌套它们,但这看起来有点难看,更重要的是有问题.假设我想做一件事,如果篮子存在并且不是空的,但是如果其中任何一个不是真的那么.这在嵌套的if语句中并不能很好地工作.

cocoa conditional objective-c

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

动画块 - 完成立即触发

为什么下面的代码一旦被触发就会记录'完成'?

[UIView animateWithDuration:0.3 
                 animations:^{
                        NSLog(@"Start");
                 } 
                 completion:^(BOOL finished){
                     NSLog(@"done");
                 }
 ];
Run Code Online (Sandbox Code Playgroud)

animation uiviewcontroller uiview ios

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

允许滚动内容大小等于帧大小

如何创建分页UIScrollView,其中内容大小仅允许查看一个项目(但左侧和右侧有更多内容,应该无法访问)?我希望将用户"陷阱"在一个页面上,两边都有反弹,类似于分页UIScrollView只使用一页内容的方式.

但是,如果我将内容大小设置为与单个页面相同的宽度,则完全禁用滚动.

iphone cocoa-touch uiscrollview ios

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

iCloud 和 Web 应用程序

我有一个 iOS 应用程序,让用户管理器食谱。我还希望他们能够在 iPad 和 Mac 上管理相同的食谱。似乎 iCloud 可以让我做到这一点。

但是,如果我还想构建一个提供相同功能的 Web 应用程序,我是否认为我需要自己的非 iCloud 解决方案?是否有任何 iCloud API 可让用户登录其 Apple 帐户并访问添加到 iOS/OS X 应用程序中的数据?

如果我想允许网络访问数据,我是否必须编写自己的数据服务和同步过程?或者是否有一些方法至少可以将 iCloud 数据“连接”到我自己的用户帐户?

cocoa cocoa-touch ios icloud

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

viewDidLoad中的边界和帧大小

我推送一个视图控制器(mainVC)并添加一些子视图.大多数这些视图都是按需构建的,因为用户采取了一些操作.

当我构建每个视图时,我指的是mainVC.view.bounds调整视图的大小.根据需求构建的那些大小很好,但第一个(我添加viewDidLoad)似乎没有考虑隐藏的导航栏或未隐藏的工具栏 - 我不确定哪个.

其他问题似乎向我保证,viewDidLoad是引用边界和添加这些子视图的正确位置.我被误导了吗?记录产生以下结果:

viewDidLoad界限高度是548.

viewWillAppear边界高度为460(-44 x 2).在viewWillAppear我隐藏导航栏,但前后的高度是相同的.

以后,边界高度为504(-44 x 1).

为什么在我尝试读取它时,边界高度没有更新viewDidLoad

cocoa-touch uiviewcontroller uiview bounds ios

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

将对象附加到UIActionSheet

按下视图的"删除"按钮.该视图属于视图控制器,用于处理按钮按下.但是,该视图控制器是容器视图控制器的子代,因此它向其委托发送一个请求删除的消息,并包含应删除的对象.

委托(父视图控制器)接收通知并呈现a UIActionSheet以确认删除.它还使自己成为该行动表的代表.

用户确认删除,父视图控制器准备删除该对象.除非必须这样做actionSheet:didDismissWithButtonIndex:.到那时,它不再知道从子视图控制器传递了哪个对象.

有没有办法将一个对象附加到警报表,以便当它被解除动作时,可以检索该对象?

cocoa-touch objective-c uiactionsheet

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

UIImageView和autolayout

我有一个使用autolayout很好地设置的视图.视图包含从上到下堆叠的一系列标签.我允许这些标签的内在大小来确定视图的大小.

最后一步是从图像中添加背景.我开始试用这个colorWithPatternImage方法,UIColor但这不是我想要的.我不想平铺图像,我不能保证它总是大于视图的内在大小.

同样,向uiImageView视图本身添加a 也不太有效.当我想根据标签保持内在大小时,视图将展开以适应图像.

我想我要找的是以下内容.

1)背景应该对视图的大小没有影响.2)应缩放图像以填充视图,但应使用原始宽高比(如有必要,请剪裁边缘).

任何想法都赞赏.

uiviewcontroller uiview uiimageview autolayout

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

如何使用Swift调用期望类型为(int*)的参数的objective-C方法?

现有的Objective-C方法具有以下特征:

-(BOOL)barcodeSetScanBeep:(BOOL)enabled volume:(int)volume beepData:(int *)data length:(int)length error:(NSError **)error;
Run Code Online (Sandbox Code Playgroud)

请注意,beepData:expect(int*).

通过传入C数组,可以从objective-C使用此方法:

int beepData[] = {1200,100};
Run Code Online (Sandbox Code Playgroud)

如何从Swift调用相同的方法?我最好的尝试,let beepData: [Int] = [1200, 100]不编译.

objective-c swift

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

无法从条形码中识别字符串编码

我的任务是使用iOS设备解码存储在Aztec条形码上的数据.我可以访问组装发送到条形码打印机的字符串的代码,但打印本身就是一个黑盒子.

当我逐步完成整个过程时,我可以看到发送到打印机的字符串看起来像这样(请注意,除了前8个字符之外,这是一个加密字符串):

_36_30_30_30_30_34_7c_5d_49_0b_ea_f7_93_ba_89_d2_c6_c2_41_2a_d7_1c_49_8c_6d_4b_5c_07_5a_ca_7a_6a_c6_d5_d0_6c_f7_20_76_5b_e0_18_46_93_7e_2a_30_0d_14_3a_1a_e5_66_7c_05_f9_df_96_8a_f1_45_a5_4a_6e_2f_89_3f_f0_93_1f_bc_3e_77_5b_27_0c_58_df_55_37_4c_ae_8a_e7_c3_c6_16_5b_57_db_7c_2d_2c_8b_1c_e3_a4_44_1b_c4_ba_6a_c6_98_93_ae_2d_20_6e_9f_e8_0f_eb_bc_9f_2e_8a_e7_cf_da_22_96_e1_74_de_b2_f0_29_ec_b1_c1_75_43_1f_b2_e5_1f_a5_f6_06_3e_97_a1_a1_93_f4_51_4a_c4_14_9f_1a_c2_5b_ba_02_45_44_2b_b3_c2_5b_ba_02_45_44_2b_b3_c2_5b_ba_02_45_44_2b_b3_c2_5b_ba_02_45_44_2b_b3_c2_5b_ba_02_45_44_2b_b3_c2_5b_ba_02_45_44_2b_b3_06_0b_12_75_85_8b_07_fb

打印的条形码如下所示:

在此输入图像描述

但是,当我使用通用的iOS条形码阅读器阅读它时(我已尝试了一些),我得到以下内容:

600004|]I?ê÷ºÒÆÂA*×?ImK\?ZÊzjÆÕÐl÷ v[à?F~*0
?:?åf|?ùßñE¥Jn/?ð?¼>w['?XßU7L®çÃÆ?[WÛ|-,?ã¤D?ĺjÆ®- nè?PÐk^¡±xOS5·Óþ?ßá×D¢\???¥ö?>¡¡ôQJÄ??Â[º?ED+³Â[º?ED+³Â[º?ED+³Â[º?ED+³Â[º?ED+³Â[º?ED+³???u?û
Run Code Online (Sandbox Code Playgroud)

这与原始字符串(例如前几个字符)相似.但我不知道这是什么类型的编码,或者如何将其转换为我期望看到的十六进制代码.

我会很高兴知道:

1)我在这看什么?

2)如何将此字符串转换回原始格式?

string encoding hex barcode ios

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

理解 RealmSwift 中的平等

我有一些item从 Realm 获取的 s:

let items = realm.objects(ShoppingListItem.self)
print("\(items.count) items") // 10 items
Run Code Online (Sandbox Code Playgroud)

每个item都有一个subdepartment,每个subdepartment都有一个department

let departments = items.flatMap({ $0.product?.subdepartment?.department })
print("\(departments.count) departments") // 10 departments
Run Code Online (Sandbox Code Playgroud)

我的目标是Department从这个列表中找到唯一的对象。预期的结果是 4。我这里的标准方法是使用Set

let uniqueDepartments1 = Set(departments)
print("\(uniqueDepartments1.count) unique departments via Set") // 9 unique departments via Set - but changes every time!?
Run Code Online (Sandbox Code Playgroud)

我想一定有一些与 Realm 对待平等的方式有关的东西。但是为了检查,我还尝试通过枚举获取唯一的部门:

var uniqueDepartments2 = [Department]()
for department in departments {
    if uniqueDepartments2.contains(department) {
        continue
    }
    uniqueDepartments2.append(department)
} …
Run Code Online (Sandbox Code Playgroud)

realm swift

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