GVKun编程网logo

iphone – 如何在NSArray中找到NSNumbers的中值?(ios nsarray nsset)

6

本文的目的是介绍iphone–如何在NSArray中找到NSNumbers的中值?的详细情况,特别关注iosnsarraynsset的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现

本文的目的是介绍iphone – 如何在NSArray中找到NSNumbers的中值?的详细情况,特别关注ios nsarray nsset的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解iphone – 如何在NSArray中找到NSNumbers的中值?的机会,同时也不会遗漏关于Caused by: org.xml.sax.SAXParseException; lineNumber: 11; columnNumber: 116; cvc-elt.1: 找不到元素 ''beans'' 的声明。、Caused by: org.xml.sax.SAXParseException; lineNumber: 3; columnNumber: 44; 值为 "none" 的属性 "parallel"、ios iphone开发 int,NSInteger,NSUInteger,NSNumber、ios – 如何在NSManagedObjects的集合(NSArray或NSSet)上设置KVO的知识。

本文目录一览:

iphone – 如何在NSArray中找到NSNumbers的中值?(ios nsarray nsset)

iphone – 如何在NSArray中找到NSNumbers的中值?(ios nsarray nsset)

我试图计算NSArray中的(小)NSNumbers集的中值. NSArray中的每个对象都是NSNumber.

这是我正在尝试,但它不工作:

NSNumber *median = [smallNSArray valueForKeyPath:@"@median.floatValue"];

解决方法

NSArray *sorted = [smallNSArray sortedArrayUsingSelector:@selector(compare:)];    // Sort the array by value
NSUInteger middle = [sorted count] / 2;                                           // Find the index of the middle element
NSNumber *median = [sorted objectAtIndex:middle];                                   // Get the middle element

你可以得到鸽友.例如,具有偶数数字的集合的中值在技术上是中间两个数字的平均值.您也可以将其包装成NSArray中类别中的整齐的单行方法:

@interface NSArray (Statistics)
- (id)median;
@end

@implementation NSArray (Statistics)

- (id)median
{
    return [[self sortedArrayUsingSelector:@selector(compare:)] objectAtIndex:[self count] / 2];
}

@end

Caused by: org.xml.sax.SAXParseException; lineNumber: 11; columnNumber: 116; cvc-elt.1: 找不到元素 ''beans'' 的声明。

Caused by: org.xml.sax.SAXParseException; lineNumber: 11; columnNumber: 116; cvc-elt.1: 找不到元素 ''beans'' 的声明。

从公司拷贝到家准备加班坐下项目,前几天发了动弹抱怨了下,至今问题还是没有解决,项目在公司电脑上运行无误,但在我自己的电脑上一直报错Caused by: org.xml.sax.SAXParseException; lineNumber: 11; columnNumber: 116; cvc-elt.1: 找不到元素 ''beans'' 的声明。

1、问了下同事,同事说是jdk版本和tomcat不对应,但是我在我自己电脑上已经对jdk和tomcat核对好多次,都是64位的,个人感觉肯定不是jdk和tomcat版本的问题,同事提供的解决办法是修改这个,但是我修改了项目报一样的错误、

2、自己手动查找了下,网上说的解决方案都已尝试,至今问题都没有解决,在配置文件中对一个个XSD都点击尝试了下,看看网络上能不能打开,除了util 别的都是配置的本地的,个人也尝试全部配置成网络获取和本地获取,项目依然报上面的错。

    a、使用jar包里的XSD文件,项目全部替换,报一样的错。

    b、使用spring的网络XSD,报一样的错

    c、部分使用jar包,部分使用网络,报一样的错误,Caused by: org.xml.sax.SAXParseException; lineNumber: 11; columnNumber: 116; cvc-elt.1: 找不到元素 ''beans'' 的声明。报错对应的行对应的是Util这一行,在全部换成网络获取Xsd时,http://www.springframework.org/schema/util 这个网址可以在eclipse中打开但是http://www.springframework.org/schema/util/spring-util.xsd 这个在eclipse内置浏览器不能打开,换成全部换成jar包下面的XSD,运行项目依然报错。

3、网上有的说是文件编码问题,尝试了下通过notpad++和UltraEdit 进行编码格式的转换,转换成UTF—8项目依然有问题。

4、项目在公司电脑是可以运行,但在家的电脑上不可以,会不会是因为公司网络和家庭网络的原因,感觉肯定不是,调试运行项目,eclipse提示就是在加载时报的错误(明天试试在公司运行下项目,在重新拷贝一份源码,实在不行只能在公司加班了。。。家里项目不能运行),所以问题到底出在哪里,求大家帮忙本人不胜感激,下面是xml源码。

Caused by: org.xml.sax.SAXParseException; lineNumber: 3; columnNumber: 44; 值为

Caused by: org.xml.sax.SAXParseException; lineNumber: 3; columnNumber: 44; 值为 "none" 的属性 "parallel"

Caused by: org.xml.sax.SAXParseException; lineNumber: 3; columnNumber: 44; 值为 "none" 的属性 "parallel" 必须具有列表 "false methods tests classes instances " 中的值。

idea用testNg与spring做测试的时候报错,如下所示:

org.testng.TestNGException: org.xml.sax.SAXParseException; lineNumber: 3; columnNumber: 44; 值为 "none" 的属性 "parallel" 必须具有列表 "false methods tests classes instances " 中的值。
    at org.testng.TestNG.initializeSuitesAndJarFile(TestNG.java:325)
    at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:90)
    at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:206)
    at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:177)
    at org.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:125)
Caused by: org.xml.sax.SAXParseException; lineNumber: 3; columnNumber: 44; 值为 "none" 的属性 "parallel" 必须具有列表 "false methods tests classes instances " 中的值。
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:198)
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:134)
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:437)
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:368)
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:325)
    at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.validateDTDattribute(XMLDTDValidator.java:1392)
    at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.addDTDDefaultAttrsAndValidate(XMLDTDValidator.java:1311)
    at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.handleStartElement(XMLDTDValidator.java:1917)
    at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.startElement(XMLDTDValidator.java:742)
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:379)
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDriver.scanRootElementHook(XMLNSDocumentScannerImpl.java:605)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:3138)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:880)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606)
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:117)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:648)
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(SAXParserImpl.java:332)
    at javax.xml.parsers.SAXParser.parse(SAXParser.java:195)
    at org.testng.xml.XMLParser.parse(XMLParser.java:39)
    at org.testng.xml.SuiteXmlParser.parse(SuiteXmlParser.java:16)
    at org.testng.xml.SuiteXmlParser.parse(SuiteXmlParser.java:9)
    at org.testng.xml.Parser.parse(Parser.java:172)
    at org.testng.TestNG.initializeSuitesAndJarFile(TestNG.java:305)
    ... 4 more

原因为6.9.10版本的testng,开始验证xml中的元素;而idea默认的testng.xml模板中parallel设置为none,因此报错。

所以解决方法:

1. testng 使用6.9.9

或者

2. testng使用6.9.10, 在testng.xml中parallel设置为false

ios iphone开发 int,NSInteger,NSUInteger,NSNumber

ios iphone开发 int,NSInteger,NSUInteger,NSNumber

1.当需要使用int类型的变量的时候,可以像写C的程序一样,用int,也可以用NSInteger,但更推荐使用NSInteger,因为这样就不用考虑设备是32位的还是64位的。

2.NSUInteger是无符号的,即没有负数,NSInteger是有符号的。

3.有人说既然都有了NSInteger等这些基础类型了为什么还要有NSNumber?它们的功能当然是不同的。

  NSInteger是基础类型,但是NSNumber是一个类。如果想要存储一个数值,直接用NSInteger是不行的,比如在一个Array里面这样用:
 NSArray *array = [[NSArray alloc]init];
[array addobject:3];//会编译错误
  这样是会引发编译错误的,因为NSArray里面放的需要是一个类,但‘3’不是。这个时候需要用到NSNumber:
 NSArray *array = [[NSArray alloc]init];
[array addobject:[NSNumber numberWithInt:3]];

Cocoa提供了NSNumber类来包装(即以对象形式实现)基本数据类型。
例如以下创建方法:

+  (NSNumber  * ) numberWithChar: ( char ) value;
) numberWithInt: ( int ) numberWithFloat: ( float ) numberWithBool: (BOOL) value;

将基本类型数据封装到NSNumber中后,就可以通过下面的实例方法重新获取它:

( ) charValue;
) intValue;
) floatValue;
(BOOL) boolValue;
(Nsstring  ) stringValue;

原文:http://blog.sina.com.cn/s/blog_83940dfb0100y1pl.html

ios – 如何在NSManagedObjects的集合(NSArray或NSSet)上设置KVO

ios – 如何在NSManagedObjects的集合(NSArray或NSSet)上设置KVO

我有一个iPad应用程序,它有一个实现NSFetchedResultsControllerDelegate的UITableViewController. (主要使用Stanford iOS类的CoreDataTableViewController code.)

我有一个辅助模型对象(self.locations),它是一个Location对象数组,它是NSManagedobjects的子类.此数组驱动UISegmentedControl的内容,该内容过滤我的主fetchedResultsContoller.

可以通过弹出窗口修改self.locations的内容.我想设置一些观察,以便我的主UITableViewController可以监视存储在self.locations中的对象的更改,并在必要时重新加载UISegmentedControl.

这也可能导致重新加载表中的主数据,所以我要小心不要在每次修改时重新加载.

我想我理解如何在单个NSManagedobject上设置KVO,但我不确定如何在数组中包含的对象上进行操作.我知道我可以使用另一个NSFetchedResultsController,但是我的self.locations对象没有驱动第二个UITableView,所以我不确定它是否有意义.

解决方法

如果您想知道是否添加,删除,替换或重新排序对象,那么观察一对多关系是非常简单的.事实上,它与普通对象完全相同:
[self addobserver:self
       forKeyPath:@"locations"
          options:0
          context:NULL];

然后实现以下内容以接收通知(部分从Apple文档复制):

- (void)observeValueForKeyPath:(Nsstring *)keyPath
                      ofObject:(id)object
                        change:(NSDictionary *)change
                       context:(void *)context {

    if ([keyPath isEqual:@"locations"]) {
        // Your custom code here.
    }

    // Be sure to call the superclass's implementation *if it implements it*.
    [super observeValueForKeyPath:keyPath
                         ofObject:object
                           change:change
                           context:context];
}

不要忘记在某些时候停止观察:

[self removeObserver:self forKeyPath:@"locations"];

而且,虽然你没有问,如果你想知道关系中包含的任何对象是否已经改变(而不仅仅是你在这里看到的NSSet),那么你必须观察各个对象.

编辑

根据您的评论,您确实希望观察单个对象.这对于“普通”对象来说相当简单,但是托管对象需要更多工作,因为您必须观察对象中的各个键,这看起来像这样:

- (void)observeManagedobject:(NSManagedobject *)myObject {
    NSArray *myObjectKeys = [[[myObject entity] attributesByName] allKeys];
    for (Nsstring *key in myObjectKeys) {
        [myObject addobserver:self 
                    forKeyPath:key 
                       options:0 
                       context:nil];
    }
}

然后你观察数组中的所有NSManagedobjects,如下所示:

for (NSManagedobject *object in myArray) {
    [self observeManagedobject:object];
}

反过来停止观察托管对象上的键!

关于iphone – 如何在NSArray中找到NSNumbers的中值?ios nsarray nsset的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于Caused by: org.xml.sax.SAXParseException; lineNumber: 11; columnNumber: 116; cvc-elt.1: 找不到元素 ''beans'' 的声明。、Caused by: org.xml.sax.SAXParseException; lineNumber: 3; columnNumber: 44; 值为 "none" 的属性 "parallel"、ios iphone开发 int,NSInteger,NSUInteger,NSNumber、ios – 如何在NSManagedObjects的集合(NSArray或NSSet)上设置KVO等相关内容,可以在本站寻找。

本文标签: