在iOS 5中,如果我allowsMultipleSelectionDuringEditing在UITableView上设置为YES,则滑动到删除不再有效.内置的Mail应用程序支持在编辑模式下滑动到删除和多个选择,我也想这样做.我该如何实现这一目标?
有没有办法在Objective-C中直接访问外部数组的内部数组?例如,对外部数据源的调用将返回以下对象:
{
bio = "this is the profile.bio data";
"first_name" = John;
"last_name" = Doe;
location = {
name = "Any Town, Any State";
};
metadata = {
pictures = {
picture = "https://picture.mysite.com/picture.jpeg";
}
}
}
Run Code Online (Sandbox Code Playgroud)
我希望能够访问例如location.name或metadata.pictures.picture数据.但是,点符号似乎不起作用.例如:
_gfbLocation = [result objectForKey:@"location.name"];
_gfbPicture = [result objectForKey:@"metadata.pictures.picture"];
Run Code Online (Sandbox Code Playgroud)
我能够访问此数据的唯一方法是首先将内部数组的内容设置为对象.思考?
Git 包含一组由第三方提供的工具.我不确定我应该如何正确使用这些工具.
例如,我想使用git-subtree.似乎有很多方法可以使用它:
复制到我的路径
cp /path/to/git-subtree.sh /usr/local/bin/git-subtree
chmod +x /usr/local/bin/git-subtree
Run Code Online (Sandbox Code Playgroud)
工作正常,感觉有点hacky.
符号链接到我的路径
chmod +x /path/to/git-subtree.sh
ln -s /path/to/git-subtree.sh /usr/local/bin/git-subtree
Run Code Online (Sandbox Code Playgroud)
也工作,感觉稍微不那么黑客
使用git别名
将以下内容添加到我的全局.gitconfig文件中:
[alias]
subtree = !/path/to/git-subtree.sh
Run Code Online (Sandbox Code Playgroud)
然后又好老chmod:
chmod +x /path/to/git-subtree.sh
Run Code Online (Sandbox Code Playgroud)
工作,感觉很好,git-ish.
使用Makefile
按照INSTALL文件.
cd /path/to/git-subtree.sh
make
make install
make install-doc
Run Code Online (Sandbox Code Playgroud)
对我不起作用,它会尝试安装到不存在的路径.也许这是因为我使用自制软件安装git 而不是从源代码安装?我懒得去调查; 我已经有三种工作方式.:)
所以我的问题是,哪些是安装git-contrib附加组件的首选方式?甚至还有一种首选方式吗?有没有其他选择我没有建议比上面列出的更好?
我正在写一个需要显示中文字符的iOS 6 iPhone/iPad应用程序.iOS 6中默认安装的亚洲字体还有很多不足之处.但是,在Apple的iOS 6:字体列表页面的底部,Apple声明:
"应用程序还可以根据需要安装以下[主要是亚洲]字体."
亚洲字体系列不会出现在提供的列表中[UIFont familyNames].我没有在UIFont类文档或Apple Developer论坛中找到有关如何安装可能已包含在iOS 6中但尚未"安装"的字体的任何信息.有任何想法吗?
在iOS 6中使用客户UIActivity子类时,可以指定从初始UIActionViewController视图中选择操作时将显示的自定义视图控制器.您可以通过从UIActivity子类的activityViewController方法返回对自定义视图控制器的引用来完成此操作.
activityViewController
此方法的默认实现返回
nil.使用视图控制器提供附加UI的子类可以重写此方法以返回该视图控制器.如果此方法返回有效对象,系统将为您显示返回的视图控制器,而不是调用该performActivity方法.在iPad上,您的视图控制器显示在弹出窗口内.在iPhone和iPod touch上,视图控制器以模态呈现.您的自定义视图控制器应提供自定义UI的视图,并应处理这些视图中的任何用户交互.完成活动后,请勿自行关闭视图控制器.相反,调用
activityDidFinish:方法并让系统为您解雇它.
请注意第一段末尾的位:在iPad上,视图控制器显示在弹出框内.在iPhone和iPod touch上,视图控制器以模态呈现.
但是,在iPad上activityViewController,无论我如何呈现UIActivityViewController(无论是模态还是通过弹出窗口),返回的视图控制器始终以模态方式显示.当通过弹出窗口呈现时,它会导致崩溃,因为它不认为它被解雇了.
我究竟做错了什么?这是iOS 6中的错误吗?
更新:这是一个简单的Xcode项目,用于说明问题.随意克隆它并玩游戏,看看你是否能看到我们出错的地方:github.com/simonwhitaker/GSActivityDemo
鉴于以下人为的例子:

我想查询我的数据,以查找猫或狗的所有对象.我希望结果集按名称排序,无论种类如何,所以取出所有的猫然后取出所有的狗都行不通.我想在一个查询中执行此操作.
一种方法是向Pet添加一个petType字段,为每个记录提供一个petType值,用于标识它所属的子实体,然后查询如下:
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Pet"
inManagedObjectContext:myMOC];
[fetchRequest setEntity:entity];
// petType values: 1 = dog, 2 = cat, 3 = goldfish. Yuk.
NSPredicate *p = [NSPredicate predicateWithFormat:@"petType = 1 OR petType = 2"]
[fetchRequest setPredicate:p];
// etc...
Run Code Online (Sandbox Code Playgroud)
但仅仅想到这样做会让我不寒而栗.有没有更好的办法?
更新:感谢所有回复的人 - 这里有一些非常好的,经过深思熟虑的解决方案,我很感激所有这些.
为了给出这个上下文,真正的数据模型比这更复杂(不是它们总是如此),但它组织得非常好.在我的时间里,我设计的数据模式比我公平的数据模式更多,我很高兴实体及其关系得到充分考虑.这个问题的出现是因为(为了扩展已经摇摇欲坠的人为例子)客户原本想要:
到现在为止还挺好.但他们也想要一个显示所有猫和狗的综合列表的视图"因为小女孩喜欢猫和狗".(最初它是猫和金鱼,出于同样的原因.)实际上并没有一种方法可以自然地对那些具体实体的子集进行分组; 它真的很随意.
到目前为止,Dave Dribin的"抽象中间实体"方法似乎是最干净的解决方案,尽管在我的情况下我认为它会有点人为; 真正唯一可以如实标记中间实体的方式就是"ThingLittleGirlsLike"!:)
我很好奇为什么GCC 在编译这个文件时会向我显示两个相同的警告:
$ cat test.c
#include <stdio.h>
int main (int argc, char const *argv[])
{
long foo = 0l;
printf("%i\n", foo);
return 0;
}
$ gcc-4.2 -Wall test.c
test.c: In function ‘main’:
test.c:6: warning: format ‘%i’ expects type ‘int’, but argument 2 has type ‘long int’
test.c:6: warning: format ‘%i’ expects type ‘int’, but argument 2 has type ‘long int’
Run Code Online (Sandbox Code Playgroud)
有趣的是,Clang还提出了两个警告:
$ clang test.c
test.c:6:14: warning: conversion specifies type 'int' but the argument has type 'long' [-Wformat]
printf("%i\n", …Run Code Online (Sandbox Code Playgroud) 我有一个加载值的NSMutableArray.
稍后在应用程序中,我需要更改数组中其中一个元素的值.
我该如何做到这一点?
谢谢托尼
我有一个键和值的字典,例如:
{
fred: 1,
dave: 2,
lily: 3
}
Run Code Online (Sandbox Code Playgroud)
如何获得字典中的第二个元素 - {dave:2}在这种情况下?
背景:我已经在SO上以这样或那样的形式多次询问过这个问题了,所以我想我会写一个Q&A页面作为一个社区维基,人们可以被引用,这可能有希望成为这个的规范答案题.
此问答适用于字典,因为它们以多种不同语言实现.不同的语言使用不同的名称来指代基本相同的数据结构 - 例如,它们在Perl中称为哈希,在Python中称为词典.在Objective-C中,它们是NSDictionary或NSMutableDictionary类的实例
.
我正在构建一个用于iOS项目的静态库,我想解码从Web服务返回的XML实体.我抓住了Google Toolbox for Mac并将以下文件添加到我的项目中:
然后在我自己的.m文件中我这样做:
#import "GTMNSString+HTML.h"
// then in one of my methods:
NSString *value = [anotherNSStringValue gtm_stringByUnescapingFromHTML];
Run Code Online (Sandbox Code Playgroud)
代码编译得很好,但是当我运行使用我的静态库的应用程序时,它会崩溃NSInvalidArgumentException,抱怨gtm_stringByUnescapingFromHTML选择器无法识别NSString:
2011-02-10 12:21:38.401 MyApp[20356:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSCFString gtm_stringByUnescapingFromHTML]: unrecognized selector sent to instance 0x71403e0'
*** Call stack at first throw:
(
0 CoreFoundation 0x0111bbe9 __exceptionPreprocess + 185
1 libobjc.A.dylib 0x012705c2 objc_exception_throw + 47
2 CoreFoundation 0x0111d6fb -[NSObject(NSObject) doesNotRecognizeSelector:] + …Run Code Online (Sandbox Code Playgroud) objective-c ×5
ios ×3
cocoa ×2
dictionary ×2
iphone ×2
c ×1
categories ×1
clang ×1
compilation ×1
core-data ×1
gcc ×1
git ×1
hashmap ×1
ios6 ×1
ipad ×1
nsdictionary ×1
popover ×1
sdk ×1
uiactivity ×1
uifont ×1
uitableview ×1