小编Sno*_*man的帖子

2D数组问题Java

如果我有一个2D数组arr[rows][columns],我怎么能用它arr.length来分别找到行和列的大小?

java arrays multidimensional-array

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

试图理解四叉树概念并将其应用于存储图像的着色信息

我读过很多文章,但似乎都没有回答这个问题.或者也许我只是不理解.我正在尝试构建一个四叉树,以便它可以代表一个图像.叶节点用于保持像素,非叶节点将保持其子节点的平均值像素.

我的问题是:

叶子节点只保存像素是如何工作的?为什么其他节点没有像素?我们如何知道细分原始根节点以表示给定图像的次数?我们只是细分它的n时间,n高度和宽度(正方形)在哪里?

编辑:那么如何跟踪叶节点,所以我知道何时在该位置添加像素?现在我有一个帮助函数,为我划分区域,跟踪宽度和高度.

algorithm tree quadtree

6
推荐指数
1
解决办法
1792
查看次数

核心数据获取速度非常慢

我正在运行一个非常基本的NSFetchRequest来获取一个实体MessageObject.我只有2000个消息对象,我想要全部检索它们.但是,由于一些奇怪的原因,获取请求超过10秒!

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"MessageObject" inManagedObjectContext:appDelegate.managedObjectContext];
[fetchRequest setEntity:entity];
NSSortDescriptor *sort= [[NSSortDescriptor alloc] initWithKey:@"createDate" ascending:NO selector:@selector(compare:)];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sort]];
[fetchRequest setFetchBatchSize:5];
Run Code Online (Sandbox Code Playgroud)

就是这样,那是我的获取请求.我甚至没有使用谓词,它需要超过10秒.对于导致这种情况的原因,我完全不知道.如果有人有任何想法或起点,请分享.

我也尝试过启用SQLite调试logging(-com.apple.CoreData.SQLDebug 1),但是我从这个简单的fetch中获得了数千行输出.这是正常的吗?

 2012-06-22 19:39:59.171 myapp[81825:15e03] about to execute fetch
 2012-06-22 19:39:59.172 myapp[81825:15e03] CoreData: sql: SELECT 0, t0.Z_PK FROM ZMBNOTEOBJECT t0 ORDER BY t0.ZCREATEDATE DESC
 2012-06-22 19:39:59.178 myapp[81825:15e03] CoreData: annotation: sql connection fetch time: 0.0061s
 2012-06-22 19:39:59.179 myapp[81825:15e03] CoreData: annotation: total fetch execution time: 0.0067s for 2052 rows.
 2012-06-22 19:39:59.179 myapp[81825:15e03] …
Run Code Online (Sandbox Code Playgroud)

iphone cocoa core-data objective-c ios

6
推荐指数
1
解决办法
2822
查看次数

使用仅包含电子邮件的联系人显示ABAddressBook

我想显示一个只显示带有电子邮件的联系人的ABAddressBook,所以我试过这样的事情:

    ABAddressBookRef addressBook = ABAddressBookCreate();
    CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople( addressBook );
    CFIndex nPeople = ABAddressBookGetPersonCount( addressBook );

    for( CFIndex emailIndex = 0; emailIndex < nPeople; emailIndex++ ) {
        ABRecordRef person = CFArrayGetValueAtIndex( allPeople, emailIndex );
        ABMutableMultiValueRef emailRef=ABRecordCopyValue(person, kABPersonEmailProperty);
        int emailCount = ABMultiValueGetCount(emailRef);
        if(emailCount == 0) {
            ABAddressBookRemoveRecord(addressBook, person, NULL);
        }   
    }
    ABPeoplePickerNavigationController *picker = [[ABPeoplePickerNavigationController alloc] init];
    picker.addressBook = addressBook;
    picker.peoplePickerDelegate = self;
    [self presentModalViewController:picker animated:YES];
Run Code Online (Sandbox Code Playgroud)

控制器显示,但显示所有联系人,如果我选择没有电子邮件的联系人,我会崩溃.如果我调用ABAddressBookSave(),它会删除所有带有电子邮件的联系人,但这是一个永久性更改,甚至会从系统联系人中删除它们.这样做的正确方法是什么?

iphone objective-c ios

6
推荐指数
1
解决办法
1311
查看次数

Python截断国际字符串

我一直试图调试这个太久了,我显然不知道我在做什么,所以希望有人可以提供帮助.我甚至不确定我应该问什么,但在这里:

我正在尝试发送Apple推送通知,并且它们的有效负载大小限制为256字节.所以减去一些开销的东西,我留下了大约100个主要消息内容的英文字符.

因此,如果消息长于最大值,我会截断它:

MAX_PUSH_LENGTH = 100
body = (body[:MAX_PUSH_LENGTH]) if len(body) > MAX_PUSH_LENGTH else body
Run Code Online (Sandbox Code Playgroud)

所以这很好,花花公子,无论我有多长时间的消息(英文),推送通知发送成功.但是,现在我有一个阿拉伯字符串:

str = "??? ????? 
??? ????? ??? ??? ??? ??? ????? 
??? ????? ??? ??? ??? 
???? ?"

>>> print len(str)
109
Run Code Online (Sandbox Code Playgroud)

所以这应该截断.但是,我总是得到无效的有效负载大小错误!好奇,我一直在降低MAX_PUSH_LENGTH阈值以查看它成功需要什么,并且直到我将限制设置为大约60才推动通知成功.

我不确定这是否与英语以外的语言字节大小有关.我的理解是英文字符占用一个字节,阿拉伯字符占用2个字节也是如此?这可能与它有关吗?

此外,字符串在发送之前是JSON编码的,因此最终看起来像这样:\u0647\u064a\u0643 \u0628\u0646\u0643\u0648\u0646 \n\u0639\u064a\u0634 ...它是否被解释为原始字符串,而u0647只是5个字节?

我该怎么办?有没有明显的错误,或者我没有问正确的问题?

python string encoding apple-push-notifications

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

从xcassets文件获取启动图像的大小不正确

Xcode的默认Images.xcassets文件有一个插槽LaunchImage,对于一个纵向iPhone应用程序,有5个可能的插槽.

根据文档,要从xcassets文件中获取正确大小的图像,只需使用[UIImage imageNamed:].

但是,在iPhone Retine(4英寸)模拟器上运行以下代码:

UIImage *splashImage = [UIImage imageNamed:@"LaunchImage"];
NSLog(@"%@", NSStringFromCGSize(splashImage.size));
Run Code Online (Sandbox Code Playgroud)

产生以下输出:

{320, 480}
Run Code Online (Sandbox Code Playgroud)

这显然是错误的大小.

我确保xcassets文件中的映射是正确的,并确认了所有维度.我似乎无法从xcassets文件中的给定集合请求特定图像,这意味着我无法做到:[UIImage imageNamed:@"LaunchImageR4"].

由于文件被添加到xcassets文件中,我也无法访问原始图像文件,因此自定义解决方案似乎无从谈起.

有谁知道如何解决这个问题?

xcode ios xcasset

6
推荐指数
1
解决办法
6034
查看次数

NSManagedObject上的Swift扩展以返回instancetype

假设我有一个托管对象Word,我想能够打电话

var w = Word.create(context)
Run Code Online (Sandbox Code Playgroud)

所以我定义了以下扩展名:

extension NSManagedObject {
    class func create(context:NSManagedObjectContext) -> NSManagedObject {
        var classname = NSStringFromClass(self)
        var object = NSEntityDescription.insertNewObjectForEntityForName(classname, inManagedObjectContext: context) as NSManagedObject
        return object
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,它不能按预期工作.

  1. NSStringFromClass 返回jibberish,就像'_TtC8WordApp4Word',我无法弄清楚Swift等价物
  2. 返回类型是NSManagedObject什么时候它应该是类似的Self,但放入Self那里就不会编译.

有没有办法做我想做的事情?

swift

6
推荐指数
1
解决办法
1034
查看次数

检查nil Core Data属性会导致EXC_BAD_ACCESS

我有一个简单的NSManagedObject子类:

@objc class MyModel: NSManagedObject {
    @NSManaged var myProperty: String
}
Run Code Online (Sandbox Code Playgroud)

但是,以下代码:

var model = NSEntityDescription.insertNewObjectForEntityForName("MyModel", inManagedObjectContext: managedObjectContext) as MyModel

assert(model != nil) // passes

if model.myProperty != nil { //crashes
    println("not nil")
}
Run Code Online (Sandbox Code Playgroud)

if model.myProperty != nil和a一起崩溃EXC_BAD_ACCESS.为什么会这样?这仅在Beta 5中开始,并且与Beta 4一起正常运行.

上面的类是使用Xcode自动生成的,因此它们没有添加?到属性的末尾.但是,手动将?属性添加到属性的末尾确实解决了问题(@NSManaged var myProperty: String?).

我的问题是,为什么Xcode不会自动添加问号,使其成为可选的,如果它在架构中标记为这样,为什么这在以前的测试版中不是问题?

core-data swift

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

了解Cocoa Touch中的MVC设计模式

通常我只是随机地组合一个应用程序,只要它有效,但这意味着我不会关注任何设计模式.我的应用程序目前广泛使用全局变量(我AppDelegate在每个视图控制器中都有一个my实例来访问我在我声明的属性AppDelegate.h).虽然它做了我想做的事情,但我读到这不是一个好的设计实践.

所以我想开始使我的代码"合法".但是,我无法想象我的应用程序现在没有全局变量.它们对应用程序的健康非常重要,但这必然意味着我做错了什么,对吧?我无法想象我还会做些什么.以此为例:

在此输入图像描述

这里有两个视图控制器,a SideViewController和a MainViewController.使用全局变量,比如说整个应用程序有一个SideViewControllerMainViewController(appDelegate.sideViewControllerappDelegate.mainViewController)的共享实例,我可以轻松地在两个视图控制器之间进行通信,这样如果我在我的"新闻源"中按下SideViewController,我可以告诉我MainViewController重新加载它视图.

但是,如果不是全局变量,我无法想象如何做到这一点?如果我的事件发生,我SideViewController将如何MainViewController以符合设计标准的方式通知我?

iphone cocoa-touch objective-c ios

5
推荐指数
1
解决办法
477
查看次数

如何发布关于bool状态的NSNotificationCenter?

我正试图通过使用通知.在我的视图控制器类中,我有一个bool isFullScreen.当这个bool的值发生变化时,我希望将通知发送给所有观察类.我不太确定如何做到这一点,因为BOOL不是一个对象.我怎么做到这一点?

iphone objective-c ios

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